您的位置:首页 > 其它

模板引擎 Velocity :动态生成页面

2012-05-25 19:35 381 查看
最近为实现某些业务要用到动态生成页面,便简单研究了下Velocity开源模版引擎,发现其非常强大。

开源地址:http://www.oschina.net/p/velocity

想必很多java爱好者都是使用eclipse编写程序的,可以在eclipse中加载velocity插件,

Velocity的Eclipse插件的Update地址是:http://propsorter.sourceforge.net/veloeclipse

这样在编写模版文件时可以有比较友好的提示。

Velocity 的 JavaDoc: http://www.oschina.net/uploads/doc/velocity-1.5/index.html
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提
供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

模版语言是以 .vm结尾的,语法如下例所示:

<th
style="width:8%;height:28px;">#if($isNull=="0") <fontcolor="red">*</font>#end$description</th>
<tdstyle="width:22%;">
#foreach ($entry in
$entrys.keySet())
#if($defaultValue==$entry)
<inputtype="radio"id="$name"name="$name"value="$entry"checked>$entrys.get($entry)
#else
<inputtype="radio"id="$name"name="$name"value="$entry">$entrys.get($entry)
#end
#end
</td>
如果想详细了解模版文件的编写语法,可到网上搜索相关资料,会有很多velocity 语法教程的。

在我们的程序中使用模版引擎,需要在配置文件中加入velocity的相应配置,这里我们是在spring中配置的,

<bean
id="velocityEngine"
class="com.jh.jcs.framework.template.velocity.VelocityTemplateEngine"
lazy-init="true"
>
<property
name="scriptName">
<value>velocity</value>
</property>
<property
name="p">
<props>
<prop
key="resource.loader">file</prop>
<prop
key="file.resource.loader.description">
Velocity File Resource Loader
</prop>
<prop
key="file.resource.loader.class">
org.apache.velocity.runtime.resource.loader.FileResourceLoader
</prop>
<prop
key="file.resource.loader.cache">
false
</prop>
<prop
key="input.encoding">
UTF-8
</prop>
<prop
key="output.encoding">
UTF-8
</prop>
</props>
</property>
<property
name="fileExtName">
<set>
<value>vm</value>
</set>
</property>
</bean>

<bean id="textareaTemplateParser"
class="com.jh.jcs.framework.template.velocity.InputArgTemplateParser">
<property
name="vmFile">
<value>templatetest/textarea.vm</value>
</property>
</bean>

….. …….

这里配置文件内容太多就不全部搬处理,具体详细的配置,可参考网上的资料。

做好了所有的配置,引入了源代码,还需要根据不同的业务做相应的封装,比如我

Map result = businessResourceService.getBusinessResourceTemplateByDataOrder(
false, list);

可以得到按自己定义规则的顺序排列map信息,其中就包括了页面信息。

这时候我们取出页面信息

List<String> contList =(List<String>)result.get(“html”);

这样,我们就根据Velocity,按照我们的字段设置,生成了我们的动态页面,



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: