文档章节

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
17.1K
181
极轻量级 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
395
10
如何用 JavaScript 控制 Arduino?

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

tangxiaoyin
2017/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
7
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
7
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
昨天
8
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
昨天
6
0
解决SVN:E210007无法协商认证机制

svn:E210007 svn: Cannot negotiate authentication mechanism 执行下面代码即可 sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-ldap...

临江仙卜算子
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部