<script type="text/javascript"> </script>
上一篇 / 下一篇 2009-02-05 16:09:30 / 个人分类:webwork
FreeMarker快速上手 | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FreeMarker是一个Java模版语言,它是JSP的绝佳替代方案. FreeMarker在你的action result可能需要在Servlet容器环境以外被载入的情况下是理想选择. 例如,如果你希望在你的应用程序中支持plugins,你可能会乐意使用Freemarker,因为那样的话plugins可以支持将所有的action class和view都打包到一个从classloader进行装载的jar文件里面.
快速上手确认配置好你的项目的classpath中的所有依赖以后, 开始使用FreeMarker就非常简单了. 典型情况下只需要freemarker.jar. 除它以外,webwork-default.xml已经配置好了将FreeMarker Result映射到你的模版文件. 你现在可以试验一下如下xwork.xml配置:
然后写好test-success.ftl:
这里name是你的action中的一个属性. 这样就可以了! 该文档的余下部分将介绍模版如何被加载, 变量如何解析, tags(标签)也可以使用. 模版加载Webwork在两个位置查找FreeMarker模版(按顺序):
变量解析/决定(Resolution)在FreeMarker中, 变量将会在多个位置进行寻找, 顺序如下:
Webwork-FreeMarker整合提供的内建变量如下:
标签支持FreeMarker是很棒的模版语言, 因为它完整的支持标签(tag). 参照WebWork提供的FreeMarker Tags文档中的如何使用通用(generic)Tags部分获取更多信息. 除了那些, 你还可以使用任何的JSP标签(tag), 就像这样:
这里mytag.tld是你使用的JSP标签库的定义文件. 注意: 为了使用FreeMarker的这个支持, 你必须开启web.xml 2.1.x compatibility文档中的 JSPSupportServlet. 提示和技巧下面是在使用FreeMarker构建WebWork应用程序时的一些有用的进阶功能. 类型转换与本地化FreeMarker内置支持日期与数字的格式化. 格式化的规则基于action request的地区信息(locale), locale是通过webwork.properties配置的, 它也可以通过I18n Interceptor进行覆盖. 这种方式一般会完美的满足你的需求, 但是你要记住, 这些格式化信息是通过FreeMarker处理的,而不是通过WebWork的类型转换支持实现. 扩展有时你可能需要扩展WebWork提供的FreeMarker支持. 最常见的原因是你希望引入你自己的标签, 就像你扩展WebWork内建标签一样.
ObjectWrapper设置如果你熟悉了FreeMarker, 你会发现它的敏感性会带来一些困扰. 最常见的方法就是尝试使用FreeMarker提供的BeanWrapper. 如果你不知道那是什么,别担心. 只要知道这些酒可以了: WebWorkBeanWrapper继承自默认的FreeMarker BeansWrapper, 提供了基本完全一致的功能, 只是修改了maps处理机制. 一般, FreeMarker有两种操作模式: 一种支持友好的内置的map (?key, ?values, etc),但是只支持String作为key; 或者特殊的内置支持(例如: ?key 返回map的相应方法而不是key), 但是它支持String和String相似的非String作为key. WebWork提供了两种情况下的可选的实现方案. 语法注释如果是FreeMarker 2.3.4, 还支持另外的语法. 这种可选的语法在你感觉你使用的IDE(尤其是ItelliJ IDEA)在默认的语法下运行困难时非常有用. 关于这种语法的更多内容, 请阅读这里 |
<script type="text/javascript"> </script>