模板引擎 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,按照我们的字段设置,生成了我们的动态页面,
![](http://my.csdn.net/uploads/201205/25/1337945909_5181.png)
开源地址: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,按照我们的字段设置,生成了我们的动态页面,
![](http://my.csdn.net/uploads/201205/25/1337945909_5181.png)
![](http://my.csdn.net/uploads/201205/25/1337945914_8493.png)
相关文章推荐
- 根据html页面模板动态生成html页面(c#类)
- 【Velocity模板引擎】前端页面#if...#elseif...#end语句用法
- 页面模板动态生成html页面(c#类)
- 根据html页面模板动态生成html页面(c#类)
- Asp.net动态生成html页面(模板技术)
- 也谈WEB打印(四):让我们的模板支持打印,并根据内容动态的生成页面
- 页面模板动态生成html
- 根据html页面模板动态生成html页面(c#类)
- 根据html页面模板动态生成html页面(c#类)
- 前端引擎初步设计稿 -通过配置生成动态页面 ,LandaSugar平台 .NET-C#-MVC
- 根据html页面模板动态生成html页面(c#类)[转贴]
- +根据html页面模板动态生成html页面(c#类)+
- 根据html页面模板动态生成html页面(c#类)
- 使用EJS(模板引擎)动态绑定页面中的数据
- 根据html页面模板动态生成html页面(c#类)
- 用页面模板引擎生成站点的一些观点
- 根据html页面模板动态生成html页面(c#类)
- 根据html页面模板动态生成html页面(c#类)
- 根据html页面模板动态生成html页面(c#类)
- +根据html页面模板动态生成html页面(c#类)+