文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
3
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
3
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
5
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0
技术工坊|如何开发一款以太坊钱包(深圳)

【好消息!】HiBlock区块链技术工坊已经成功举办了26期,其中北京1期,西安1期,成都2期,上海22期。经常有社区的小伙伴问定期举办技术工坊的除了上海以外,其他城市有没有?现在区块链技术工...

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部