文档章节

Jfinal3 魔板 自定义指令

tony.li
 tony.li
发布于 2017/06/01 12:24
字数 391
阅读 61
收藏 0
点赞 1
评论 1

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 ⋅ 180

极轻量级 Java 模板引擎--Enjoy

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

JFinal ⋅ 2017/08/03 ⋅ 22

一个简单的Web开发框架性能测试项目

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

罗格林 ⋅ 2017/01/28 ⋅ 10

sicily 1150 简单魔板 sicily 1151 魔板 sicily 1515 魔板C

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

Ciel ⋅ 2012/12/15 ⋅ 1

如何用 JavaScript 控制 Arduino?

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

tangxiaoyin ⋅ 2017/09/30 ⋅ 0

iPhone复制粘贴软件--MagicPad

MagicPad (中文名魔板) 是第一款为iPhone提供复制粘贴功能的第三方软件,它是由MagicPad的开发者Zac White开发的一个非赢利和全开源软件。MagicPad只能在同一个应用程序中实现复制和粘贴。...

匿名 ⋅ 2009/07/02 ⋅ 0

laravel下微信支付接入,三种支付模式

* 1. (扫码模式二,微信浏览器内部支付(jsapi模式),手机端浏览器支付 (H5支付或者wap支付) * 1. * 1. 先进微信https://pay.weixin.qq.com/index.php做参数配置工作 * 1. 产品中心--开发者配置...

liang3391 ⋅ 2017/12/27 ⋅ 0

【安卓】安卓集成魔窗-完整实例

前些日子,公司安卓应用的魔窗出现问题,需要重新写过。于是,就有了此篇魔窗HelloWord。 没有包含微信分享,如果有微信分享,无非就是再集成微信分享,将分享链接改为魔窗的mLink深度链接即...

qq_26525215 ⋅ 2017/09/03 ⋅ 0

Freemarker学习记录

学习Freemarker,把其中比较容易忘记的点记录下: <h1>Welcome ${user!"Anonymous"}!</h1> 当user从数据模型中丢失或为空时,模板将会将user的值表示为字符串"Anonymous"。 <#if user??><h1>......

MaDFroG ⋅ 2013/09/02 ⋅ 0

关闭打开debian7下的触摸板

每次在打字的时候都会不小新碰到触摸板,十分郁闷,这是我在网上找到的处理方法,注意,每次重新开启电脑后都会失效,只会在每次在设置后关机前这段时间有效,一直关闭触摸板的方法我也没有找到,试...

Eniac ⋅ 2013/08/08 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud构建微服务架构—创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-par......

itcloud ⋅ 3分钟前 ⋅ 0

拖动

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>event</title> <style> #box { width: 100px; height: 100px; background-color: aquamarine; position: absolute; } </style......

fyliujj ⋅ 6分钟前 ⋅ 0

es6 polyfill array

polyfill之javascript函数的兼容写法——Array篇 1. Array.isArray(obj) if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[objec......

球球 ⋅ 8分钟前 ⋅ 0

kibana启动异常

检查一下:kibana.yml 每一对key:value中,冒号之后应有空格。

增删改查1 ⋅ 10分钟前 ⋅ 0

js修改img的src属性刷新图片时的图片缓存问题

问题:上传一张图片,通过js更新src属性刷新图片使其即时显示时, 当img的src当前的url与上次地址无变化时(只更改图片,名称不变,不同图片名称相同)图片不变化(仍显示原来的图片) 但通过...

HaierBrother ⋅ 10分钟前 ⋅ 0

Mysql

1.Jdbc Url 设置allowMultiQueries为true和false mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可。 参数名称 参数说明 缺省...

瑟青豆 ⋅ 13分钟前 ⋅ 0

mysql导出导入表结构与数据

当我们需要进行数据迁移时,mysql自带的mysqldump会是最好的方式。 1.导出某张表的结构和数据 首先,我们应当使用服务器,打开终端,连接到所需要导出的表所在的服务器上。执行命令: mysqld...

hengbao5 ⋅ 14分钟前 ⋅ 0

世界杯也走向“比拼”大数据的时代

《日本经济新闻》6月19日报道称,俄罗斯足球世界杯已于6月14日揭开战幕。作为第21次举办的足球世界杯,如何活用大数据有可能成为决定各支球队胜负的重要因素。从对阵球队的分析到战术建议,还...

加米谷大数据 ⋅ 14分钟前 ⋅ 0

金额转为千分制,金额转中文大写

金额转关为大写 js /** 数字金额大写转换(可以处理整数,小数,负数) */ function digitUppercase(n){ if(!n) reutrn "" let fraction = ['角', '分']; let digit = ['零', '壹', '贰', '叁', ...

YXMBetter ⋅ 17分钟前 ⋅ 0

开发利器JRebel部署SpringBoot项目

不要以为年纪轻轻就跌倒了人生谷底,未来还有更大的下降空间等着你。 idea下载和安装JRebel 激活JRebel 访问https://my.jrebel.com/ 使用facebook或twitter登录 勾选 Build project automati...

郑龙飞 ⋅ 22分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部