全面超越 Velocity 的全新一代 Java 模板引擎 jetbrick-template 1.1.0 正式版发布。新版支持自定义标签 #tag,宏定义 #macro,layout 等功能。
完善的中文在线文档:http://subchen.github.io/jetbrick-template/
Version 1.1.0 (2013-12-02)
- [新增] #12 增加自定义 Tag 功能
- [新增] #13 增加 #macro 宏定义
- [修复] #14 如果运算符的操作数的返回值是 void, 那么就会出现编译错误
- [新增] #15 增加对类的静态字段和静态方法的直接访问
- [新增] #18 增加默认的 layout Tag 实现
- [新增] #19 与Nutz集成,实现JetTemplateView (Thanks wendal1985@gmail.com)
- [修复] #20 The column of error line is wrong when the line contains '\t'
- [修复] #21 NumberUtils.format(123) should be "123.00"
- [修复] #22 对于 ${bean.property},优先使用 getXXX()
- [修复] #23 Fixed request uri in JetTemplateServlet/JetTemplateFilter
jetbrick-template 是一个新一代 Java 模板引擎,具有高性能和高扩展性。 适合于动态 HTML 页面输出或者代码生成,可替代 JSP 页面或者 Velocity 等模板。 指令和 Velocity 相似,表达式和 Java 保持一致,易学易用。
- 支持类似与 Velocity 的多种指令
- 支持静态编译
- 支持编译缓存
- 支持热加载
- 支持类型推导
- 支持泛型
- 支持可变参数方法调用
- 支持方法重载
- 支持类似于 Groovy 的方法扩展
- 支持函数扩展
- 支持自定义标签 #tag
- 支持宏定义 #macro
- 支持布局 Layout
11 楼 所谓码农 2013-12-05 22:42
10 楼 bluerose 2013-12-05 20:19
9 楼 pn2008 2013-12-04 16:31
8 楼 subchen 2013-12-04 14:52
这一点能做容错处理吗?在这种情况下,页面上不要进入出错页面,而输出空白,后台日志中打出Error异常日志。
这个不是由模板引擎处理的,而是由 Web 框架处理的,比如自定义 500 页面,在 500 页面中判断是否错误来自于模板引擎,如果是,则输出空页面,把错误输出到日志里,否则正常输出错误。
7 楼 janrn 2013-12-04 13:00
这一点能做容错处理吗?在这种情况下,页面上不要进入出错页面,而输出空白,后台日志中打出Error异常日志。
6 楼 subchen 2013-12-04 09:11
你需要预定义一些
1. #include 子模板,
2. 默认的常用变量
3. 一些的扩展方法和函数
4. 自定义标签 Tag
这样用户就可以制作出他想要的模板效果了。
请启用 template.reloadable 来支持模板的热部署
5 楼 subchen 2013-12-04 09:07
1. 一个页面上,多次调用到相同的函数并不会被缓存,你可以实现缓存 Tag(文档中有范例), 页面上的重复内容可以用 #macro 或者 #include 实现
2. 各种指令都支持嵌套
3. 考虑在下一个主要版本中增加anontation 注解, 来自动获取所有的扩展方法/函数/自定义标签。减少配置
4. 如果扩展方法被删除,但是如果模板没有对应修改。那么默认情况下(compile.always=true), 会进行编译,然后出现 SyntaxErrorException, 如果 compile.always=false 的情况下,运行时会出现 NoSuchMethodException。
后台会有详细的错误日志。 正确情况下,前台页面应该会显示500错误(同时包含模板的详细错误信息)
4 楼 janrn 2013-12-03 20:48
如果一个扩展方法,在后期开发过程中,被删掉,而模板里忘记修改了,这时页面会怎么样,是整页打不开,还是页面上显示一段错误,还是页面上这一段显示空白,后台Logs上会不会打出异常日志。
Freemarker这点很讨厌,默认下一出点错,整页可能就直接进入出错页面(当然,也可以修改默认不异常)
3 楼 janrn 2013-12-03 20:43
2 楼 janrn 2013-12-03 20:39
如果想要在项目中,可以在线修改或制作模板,并实时生效,另外想实现以下功能,你看可行吗:
如CMS首页,有各种内容,我想做成各个TAGS,供做模板的人使用,但是,有时,不同的区块中又会有内容交叉或者重复,或者在一个页面上,多次调用到相同的函数及TASS(参数也完全相同的情况),系统能否自动为其缓存并直接返回,以提高效率。
另外,在TAGS或函数里,是否支持嵌套,比如tags1(条件。。。)查询的是文章列表,里面嵌套一个tags2(条件。。。)查询文章评论,然后就可以输出文件列表,以及每个列表上最近几条评论。
1 楼 git_for_java 2013-12-03 09:39
非常实用的功能! 做 layout, 页面 cache 方便了。