技术博客: http://blog.sina.com.cn/s/articlelist_1766082610_0_1.html
这两天看了下freemarker的知识,对freemarker的简单认识:freemarker是一种纯数据模型,可以与多种文本格式中可以使用freemarker标签获取、显示数据,以java的JSP为例:使用了freemarker标签的html中也就杜绝了嵌套java代码的可能,可以说把html和数据给彻底分开了,这样的好处当然就是程序员和美工各司其职,便于分工,好了闲话少说,下面我就把我学习freemarker的基本用法的过车列出,由于时间原因所以一次写不完,下回接着写:
环境:struts2 转到ftl中
建立实体对象:
User.java
String username;
String userpw;
int age;
所有的属性都有set和get方法
建立Action类包装数据:
建立ftl文件便于显示:
--------------------------------------------------------------
(逻辑判断标签)判断某一个对象的属性或者某一个字段是否为空,为空则不输出,不为空则输出不报异常
action中:
User usertest = new User();(usertest对象需要在Action中设置set和get方法)
usertest.setUsername("小明");
usertest.setUserpw("123456789");
usertest.setAge(50);
ftl页面中:
${usertest.userpw?if_exists }、${aa}
---------------------------------------------------------------------------------------------
传递单个对象,输出对象的属性
action中:
User usertest = new User();(usertest对象需要在Action中设置set和get方法)
usertest.setUsername("小明");
usertest.setUserpw("123456789");
usertest.setAge(50);
ftl页面中:
姓名:${usertest.username} 密码: ${usertest.userpw}
----------------------------------------------------------------------------------------
传递普通的字符串值
action中:
private String aa;(设置set、get方法)
this.setAa("字符串");
ftl页面中:
字符串:${aa}
--------------------------------------------------------------------------
list集合标签迭代使用,并且判断下一个对象是否为空
action中:
User user1 = new User();
user1.setUsername("小明");
user1.setUserpw("123");
User user2 = new User();
user2.setUsername("小张");
user2.setUserpw("456");
ArrayList userlist = new ArrayList();(设置set、get方法)
userlist.add(user1);
userlist.add(user2);
ftl页面中:
<#list userlist as user>
<#if user_has_next>
编号:${user_index} 姓名:${user.username} 密码:${user.userpw}<br>
<#else>
对不起,没有了
</#if>
</#list>
--------------------------------------------------------------------------------
将得到的字符串进行转换类型
ftl页面中:
<#assign answer=42/>
${answer}|
${answer?string+10}|
(${answer?string.number+10})|
${answer?string.currency}|
${answer?string.percent}|
${answer}
-----------------------------------------------------------------------
时间进行格式化转换
action中:
private Date lastUpdated;(设置set、get方法)
this.setLastUpdated(new Date());
ftl页面中:
${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}|
${lastUpdated?string("yyyy-MM-dd HH:mm:ss")}|
${lastUpdated?string("yyyy-MM-dd")}|
${lastUpdated?string("yyyy/MM/dd")}|
${lastUpdated?string("EEE, MMM d, ''yy")}|
${lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")}
----------------------------------------------------------------------------
判断布尔值
ftl页面中:
<#assign foo=true/>
${foo?string("yes", "no")}
-----------------------------------------------------------------
逻辑判断(if/elseif/else)
action中:
private String aa;(设置set、get方法)
this.setAa("字符串");
ftl页面中:
if判断是否为空
<#if aa??>
进入不为空模块!
<#else>
进入为空模块!
</#if>
if判断字符串是否相等
<#if usertest.username="黄光裕">
字符串相等
<#else>
字符串不相等
</#if>
-----------------------------------------
以上是刚看到的,由于时间原因我会以后接着记录下来,希望大家能够关注!