`
Javahuhui
  • 浏览: 77974 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

改用Freemarker作为项目视图,代替jsp

阅读更多
以前用Struts2作为项目的控制层,在视图方面自然而然得用jsp,外加使用Struts2的标签,很方便也很简单,也强大。
但自从使用SpringMVC后,基本放弃使用Struts2(个人选择,并不代表Struts2不好)。Struts2不用了,那它的标签我也不想用了,那用什么来代替呢?答案就是Freemarker。它是不同于jsp的另外一种视图,而且自带的标签也很强大。在这里简单介绍Freemarker常用的一些标签使用:
<#include path> 这里path:要包含文件的路径

<#list sequence as item> 这里sequence:表达式将被自叙序列或集合;item:循环变量的名称
例:
<#list ["aaa","bbb","ccc"] as o>
    ${o_index+1}--${o}<#if o_has_next>,</#if>
</#list>
这里item_index:是一个包含当前项在循环中的索引数值,item_has_next:辨别当前项是否是序列最后一项的布尔值

<#break> 用来终止list循环

<#if condition>...<#elseif condition2>...<#else>...</#if> 使用方式类似Java的if else

Freemarker也可以像jsp那样,引入其它标签库,如:
<#assign s=JspTaglibs["/WEB-INF/spring.tld"]>
如果实现对Struts2标签依依不舍,也可通过此来引入Struts2标签

还可自定义标签

还有一点就是数据模型,比如日期、布尔值、数字,Freemarker也有特殊的处理方式。
日期的处理,Freemarker使用内建函数date、time或datetime;若要格式化参数显示,则使用内建函数string,如obj?string("yyyy-mm-dd HH:mm:ss")
Freemarker也提供了很多很好的用内建函数,也挺常用到,如:
str?substring(from, toExclusive) 取子串
str?cap_first 首字母大写
str?uncap_first 首字母小写

<#assign test1 = "10/25/1995"?date("MM/dd/yyyy")>
<#assign test2 = "15:05:30"?time("HH:mm:ss")>
<#assign test3 = "1995-10-25 03:05 PM"?datetime("yyyy-MM-dd hh:mm a")>

${test1}
${test2}
${test3}
输出为:
Oct 25, 1995
3:05:30 PM
Oct 25, 1995 3:05:00 PM

str?ends_with 以...结尾,如"redhead"?ends_with("head")
返回布尔值true

还是很多,不一一显示,详细请看文档
1.1  处理字符串的内建函数
1.2  处理数字的内建函数
1.3  处理日期的内建函数
1.4  处理布尔值的内建函数
1.5  处理序列的内建函数
1.6  处理哈希表的内建函数
1.7  处理节点(XML)的内建函数
1.8  很少使用的和专家级的内建函数

最后还有一小点使用技巧
替代空值:${(str)!'空值,没有内容'}
判断对象或某属性是否存在:obj?? 或 obj.id?? 返回值是布尔类型值
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics