Velocity 模板引擎在复杂邮件业务中的简单举例

来源:互联网 发布:怎么预测时间序列数据 编辑:程序博客网 时间:2024/05/16 03:25

        Velocityapache组织下的一个基于java模板引擎(template engine),而这种Apache velocity 模板引擎的简单使用可以更好的将样式设计和java开发分离开来。


       举个简单例子,在给一些客户发送邮件时,邮件正文往往带有一些较规范的表格或链接,而在发送邮件时,我们当然可以在java代码中写正文时加入html标签修饰达到如下目的:


        但如果在业务上遇到更为复杂,项目较为庞大,这就要求项目组分工较为明确,而此时的邮件开发人员(java开发)对表单设计并不在行,换句话说java开发人员在开发邮件发送功能时即便花费较长时间用在利用html标签来修饰邮件正文内容,但其也很难达到专业的Web designers设计出来的水平。那么最能达到用户要求的方式是什么呢?是让每个人仅作自己最擅长的事情:java开发人员仅作邮件功能,web designer仅作邮件的类似web表单的正文。


       上面所示的邮件中的表格(table)及其中的样式和连接(<a></a>)效果是web designer使用html实现的一个模板,而java开发人员则提供了相关表格(table)单元格填充所需要的内容,模板引擎利用模板语言将两者进行完美结合,最终形成一个美观邮件内容。Velocity则提供了这种方式的实现,如下图所示:

         Velocity提供的这种方式的实现,其思想来源于MVCWeb designer设计好一个模板,里面使用html标签和模板语言(Velocity Template Language),而velocity模板引擎起到了控制作用,java开发人员只需要将相关数据作为一个map或其他变量等信息提供给这个模板,即可完成相关工作。代码示意如下所示:


模板:templateDemo.vm

</head><center><TABLE width=850 border=1 bordercolor="#000000" id="tabID"><TBODY align="left"><TR rowspan="2"><TD colSpan=4><B><FONT color=blue>$map.get("applyFormId")</FONT></B></TD></TR><TR><TD align=middle colSpan=4><FONT size=5><B>templateDemo</B></FONT></TD></TR><TR><TD nowrap width="140"><B>标题:</B></TD><TD> $map.get("Name")</TD><TD nowrap><B>关键词</B></TD><TD> $map.get("key")</TD></TR></TBODY></TABLE></center></html>

 

VelocityEngine的使用

VelocityEngine ve = new VelocityEngine();ve.setProperty(Velocity.RESOURCE_LOADER, "class");ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); // 设置类路径加载模板ve.setProperty(Velocity.INPUT_ENCODING, "utf-8");// 设置输入字符集ve.setProperty(Velocity.OUTPUT_ENCODING, "utf-8");// 设置输出字符集ve.init();// 初始化模板引擎Template t = ve.getTemplate("/templateDemo.vm");// 加载模板,相对于classpath路径VelocityContext context = new VelocityContext();HashMap<String, Object> result = new HashMap<String, Object>();result.put("Name", "模板");result.put("Key", "语言");context.put("map", result);StringWriter writer = new StringWriter();t.merge(context, writer); // 转换writer.toString();//形成最终结果

 

       虽然模板引擎不仅仅使用在复杂的邮件内容的业务上,但这个简单例子让我们体会到了界面和业务数据分离的实现方式,这也是模板引擎的主要作用,即它可以让界面与数据分离,从而大大提高开发效率,也使得项目更加容易重用优良的界面设计。

 

原创粉丝点击