活学活用freemarker

本文介绍了Freemarker模板引擎的基础用法,包括如何在Struts2框架中使用Freemarker显示数据,涵盖逻辑判断、字符串处理、日期格式化及列表迭代等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

技术博客: 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>

-----------------------------------------

以上是刚看到的,由于时间原因我会以后接着记录下来,希望大家能够关注!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值