最新 Beetl提供web-sample例子
从主网站上https://sourceforge.net/projects/beetl/files/ 下载,sample-web.war,部署在任意支持web的容器里,然后可以通过http://${your ip}:${your port}/${your context path}/index 来访问,如下样子

?
首先,通过 BeetlInitListener 初始化配置GroupTemplate,如下代码
?
public void contextInitialized(ServletContextEvent arg0) { ServletGroupTemplate.intance().init(arg0.getServletContext()); ServletGroupTemplate.intance().getGroup().config("<!--:", "-->", "${", "}"); ServletGroupTemplate.intance().getGroup().setCharset("UTF-8"); ServletGroupTemplate.intance().getGroup().registerFormat("samples.xss", new XSSDefenseFormat()); ServletGroupTemplate.intance().getGroup().registerFunction("samples.join", new JoinFunction()); }?控制语句占位符号是<!--: ,这样,尽可能然模板少破坏原有文件,你可以通过浏览器直接浏览模板文件
另外注册了一个防止XSS攻击的格式化函数,在本实例中,如显示新闻内容${news.content,samples.xss}就可以了,XSSDefenseFormat会过滤带有javascript的输入。
JoinFunction是用于显示邮件发送者的函数,会将多个邮件发送者按照指定符号分开显示,在本示例中,用${samples.join(mail.from,",")}
?
页面布局上,采用layout标签函数。如首页,新闻页,以及帮助页都使用indexLayou.html页面(用户登录后,所有页面使用emailLayout.html页面),如下首页面
?
<!--: layout("/indexLayout.html",{"menuId":0,"title":"首页"}){--><div name="code"><div alt="最新 Beetl提供web-sample例证" name="Insert_logo" width="158" height="124" id="Insert_logo" style="background: #8090AB; display:block;" /></a></p><!--: includeFileTemplate("/inc/indexMenu.html"){ -->这是菜单,参考inc/indexMenu.html<!--:} --><!-- end .header --></div>${layoutContent}<!--: includeFileTemplate("/footer.html"){ --><div alt="最新 Beetl提供web-sample例证" height="272" src="/img/2012/06/28/0320162033.gif">?
?
如果启用预编译功能,可以看到如下class在运行的时候被生成
?

?
欢迎访问 http://beetl.sourceforge.net/,欢迎加入beetl群 219324263
?
1 楼 chenlei65368 2012-05-07 正好看了这个例子,内置函数还是少了,如果写自定义函数的话,感觉有点麻烦了。
比如字符串截取,字符串长度,字符串大小写转换等,要实现类似jstl函数标签的功能,一个方法就要写一个类实现Function,这个类的数量就有点多了。
2 楼 javamonkey 2012-05-08 chenlei65368 写道正好看了这个例子,内置函数还是少了,如果写自定义函数的话,感觉有点麻烦了。
比如字符串截取,字符串长度,字符串大小写转换等,要实现类似jstl函数标签的功能,一个方法就要写一个类实现Function,这个类的数量就有点多了。
恩,内置函数确实少,关于字符,时间,数组(集合)操作的,在模板里很常用,但目前还没有提供。目前手头还有些预编译优化bug,这个改完了,会陆续提供一些比较核心的扩展函数。
3 楼 chenlei65368 2012-05-08 javamonkey 写道chenlei65368 写道正好看了这个例子,内置函数还是少了,如果写自定义函数的话,感觉有点麻烦了。
比如字符串截取,字符串长度,字符串大小写转换等,要实现类似jstl函数标签的功能,一个方法就要写一个类实现Function,这个类的数量就有点多了。
恩,内置函数确实少,关于字符,时间,数组(集合)操作的,在模板里很常用,但目前还没有提供。目前手头还有些预编译优化bug,这个改完了,会陆续提供一些比较核心的扩展函数。
期待你的更新 4 楼 javamonkey 2012-05-18 chenlei65368 写道javamonkey 写道chenlei65368 写道正好看了这个例子,内置函数还是少了,如果写自定义函数的话,感觉有点麻烦了。
比如字符串截取,字符串长度,字符串大小写转换等,要实现类似jstl函数标签的功能,一个方法就要写一个类实现Function,这个类的数量就有点多了。
恩,内置函数确实少,关于字符,时间,数组(集合)操作的,在模板里很常用,但目前还没有提供。目前手头还有些预编译优化bug,这个改完了,会陆续提供一些比较核心的扩展函数。
期待你的更新
我再你的博客里回复了一下 如何较为方便的增加更多函数的帖子,你看一下。
另外预编译最近发现了好俩个个bug,正在修复,如果影响你的开发,请先切换到非优化模式。
5 楼 chenlei65368 2012-05-18 javamonkey 写道chenlei65368 写道javamonkey 写道chenlei65368 写道正好看了这个例子,内置函数还是少了,如果写自定义函数的话,感觉有点麻烦了。
比如字符串截取,字符串长度,字符串大小写转换等,要实现类似jstl函数标签的功能,一个方法就要写一个类实现Function,这个类的数量就有点多了。
恩,内置函数确实少,关于字符,时间,数组(集合)操作的,在模板里很常用,但目前还没有提供。目前手头还有些预编译优化bug,这个改完了,会陆续提供一些比较核心的扩展函数。
期待你的更新
我再你的博客里回复了一下 如何较为方便的增加更多函数的帖子,你看一下。
另外预编译最近发现了好俩个个bug,正在修复,如果影响你的开发,请先切换到非优化模式。
是的,目前是切换到非优化模式的 6 楼 chenlei65368 2012-05-18 我还是加入beetl群吧