文档章节

Jfinal3 魔板 自定义指令

tony.li
 tony.li
发布于 2017/06/01 12:24
字数 391
阅读 68
收藏 0

Jfinal3 魔板功能异常强大,在简洁的核心指令基础上,又可以自由灵活扩展,给开发人员带来极大的便利,以下实现trim指令,只需要继承Directive ,实现exec方法即可, 主要功能是针对魔板中的块内容进行trim ,在保留魔板代码的可读性上 ,优化输出内容,去掉部分空行 ,如果确认块内容只需要执行不需要输出,可直接通过trim指令第一个参数来跳过打印 如:#trim(true) ,寥寥数行代码,异常简单。

#trim()
  #set(strA = "aaa")
  #set(strB = "aaa")
#end
#(strA)

 

public static class TrimDirective extends Directive {
        private boolean skipPrint = false;
        public void setExprList(ExprList exprList) {
            Expr[] exprArray = exprList.getExprArray();
            if(exprArray.length >0 && exprArray[0] instanceof Const) {
                if(!((Const)exprArray[0]).isBoolean()) {
                    throw new ParseException("#trim firest parameter [skipPrint] must be boolean", this.location);
                }
                this.skipPrint = ((Const)exprArray[0]).getBoolean().booleanValue();
            }
        }
        public void exec(Env env, Scope scope, Writer writer) {
            FastStringWriter fsw = new FastStringWriter();
            stat.exec(env,scope,fsw);
            if(!this.skipPrint && fsw.getBuffer().length()>0){
                write(writer, fsw.toString().trim());
            }
        }

        public boolean hasEnd() {
            return true;
        }
    }

据说jfinal的设计建模基于一些哲学思维,看到jfinal 让我想起一句话,“给我一个支点 我就能撬动地球  ” ,希望jfinal这个支点内成为大家顺利飞升的助力,想要解脱飞升的程序猿赶快加入Jfinal 俱乐部亲听波总授业解惑,感谢 @JFinal 波总多年来的务实奉献精神,希望jfinal越来越好。开源不易,也希望言论都能出自本心,向所有开源贡献者致敬。第一次发帖,话有点语无伦次了…… 见谅。

 

© 著作权归作者所有

共有 人打赏支持
tony.li
粉丝 7
博文 1
码字总数 391
作品 0
松江
加载中

评论(1)

JFinal
JFinal
感谢你的分享,越来越多的人发现 jfinal template engine 的简洁强大之处了,后续会有越来越多的功能被扩展出来,有小伙伴们扩展出来的 shiro 权管理指令相当自然好用:
#hasPermission(...)
显示某某管理菜单
#end
JFinal 3.1 发布,没有繁琐、没有复杂,只有妙不可言

JFinal 3.1 针对 3.0 版推出的魔板引擎进行了深度打磨,例如魔板 parse 异常提示更加友好明确,消除指令嵌套时多出来的一个换行符,对于模板 isModified() 逻辑进行了重构,消除冗余代码,可...

JFinal
2017/05/04
16.5K
180
极轻量级 Java 模板引擎--Enjoy

Enjoy是专为Java开发者量身定做的极简而强大的魔板引擎,专为Java开发者量身定做体现在表达式与指令的用法与Java语言保持一致。由于符合Java语法习惯,所以对于Java开发者来说学习成本几乎为...

JFinal
2017/08/03
4.9K
22
sicily 1150 简单魔板 sicily 1151 魔板 sicily 1515 魔板C

这三道题目大体相同,只是数据处理方式不同,需要修改的地方很少,因此只以1150为例说明即可。 Description 魔板由8个大小相同方块组成,分别用涂上不同颜色,用1到8的数字表示。 其初始状态...

Ciel
2012/12/15
0
1
一个简单的Web开发框架性能测试项目

项目地址:http://git.oschina.net/greenlaw110/simple-webframework-benchmark 有JFinal3的测试结果哦

罗格林
2017/01/28
356
10
如何用 JavaScript 控制 Arduino?

Arduino 运行 C 语言,而主控端运行 JavaScript,一次要编写和维护两种程序。既然浏览器和服务器都用 JavaScript,若 Arduino 也能用 JavaScript 控制,那岂不完美? 这就是 Rick Waldron 设...

tangxiaoyin
2017/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一生产与一消费:操作栈

1:创建栈代码如下 public class MyStack { private List list = new ArrayList(); synchronized public void push() { try { if (list.size() == 1) {......

起个昵称好难啊
6分钟前
0
0
vue中vuex简单实例

1.安装 npm install vuex --save 2.store.js import Vue from 'vue';import Vuex from 'vuex';Vue.use(Vuex);const store = new Vuex.Store({state: {count: 900000},g......

帝子兮
13分钟前
0
0
使用Golang实现网页爬虫

使用Golang实现网页爬虫

coderminer
15分钟前
0
0
30 个免费的 Sketch 必备插件

简评:中秋三天小长假,要不要学点啥?比如简单的设计?比如用 Sketch 做个项目? Sketch 有许多值得称赞的地方,其丰富的插件就是亮点之一。Sketch 的社区有着大量免费高效的插件。今天这篇...

极光推送
27分钟前
0
0
web打印控件 LODOP的详细api

web打印控件 LODOP的详细api

wangxujun59
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部