没有合适的资源?快使用搜索试试~ 我知道了~
freemarker中文手册
需积分: 9 95 浏览量
2011-11-16
13:33:50
上传
评论
收藏 395KB DOC 举报
温馨提示
freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册freemarker中文手册
资源推荐
资源详情
资源评论









开发笔记
截取字符
<#if news.title?length lt 13 >
${news.title}
<#else>
${news.title[0..12]}...
</#if>
一、freemarker 的空值和默认值
${user?if_exists}
${user?default('your name')}
判断对象是不是 null
<#if mouse?exists>
Mouse found
<#else>
或<#if book.name?? >
Mouse found
</#if>
list 空值判断 <#if bookList?size = 0>
<#list recommendlist as content>
<#if content_index%3==0>
<p style="height:28px; padding-top:2px; font-weight:bold; font-size:14px; padding-left:10px;">$
{content.title}</p>
<ul>
</#if>
<#if content_index%3==1>
<li>${content.title}</li>
</#if>
<#if content_index%3==2>
<li>${content.title}</li>
</ul>
</#if>
</#list>
<p>
<#list recommendlist as content>
<#if content_index%3==0>
<img src="${content.title_icon}" >
</#if>

</#list>
指令还隐含了两个循环变量:
item_index:当前迭代项在所有迭代项中的位置,是数字值。
item_has_next:用于判断当前迭代项是否是所有迭代项中的最后一项。
在循环过程中,如果您想跳出循环,那么可以使用结合 break 指令,即<#break>来完成。
<#escape x as (x)!""> //去除 null 报错
三、 Freemarker 如何遍历 List 实例应用
创通过上面的介绍,相信您已经对 Freemarker 如何遍历 List 有了了解,那么我们就废
话少说,开始做一个应用吧。
User 类
public class User{
private String username;
private
(省略 set 和 get 方法)
}
user.ftl
<#--Freemarker 遍历 list-->
简单遍历 list:
<#list userList as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
</#list>
<#--Freemarker 遍历 list 并应用 list 隐含变量 item_index-->
item_index 使用:
<#list userList as user>
第${user_index+1}个用户
用户名:${user.userName}
密 码:${user.userPassword}

年 龄: ${user.age}
</#list>
<#--Freemarker 遍历 list 并应用 list 隐含变量 item_has_next-->
item_has_next,size 使用:
<#list userList as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
<#if !user_has_next>
共有${userList?size}最后一个用户是:${user.userName}
</#if>
</#list>
<#--Freemarker 遍历 list 并按用户年龄升序排序-->
按用户年龄升序排序:
<#list userList?sort_by("age") as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
</#list>
<#--Freemarker 遍历 list 并按用户年龄降序排序-->
按用户年龄降序排序:
<#list userList?sort_by("age")?reverse as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}

</#list>
<#--Freemarker 遍历 list 当用户年龄大于 21 岁时,停止输出-->
list 中应用 break:
<#list userList?sort_by("age")?reverse as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
<#if (user.age>21) >
<#break>
</#if>
</#list>
1、快速入门
(1)模板 + 数据模型 = 输出
55555555 FreeMarker 基于设计者和程序员是具有不同专业技能的不同个体的观念
55555555 他们是分工劳动的:设计者专注于表示——创建 HTML 文件、图片、Web 页面
的其它可视化方面;程序员创建系统,生成设计页面要显示的数据
55555555 经常会遇到的问题是:在 Web 页面(或其它类型的文档)中显示的信息在设计
页面时是无效的,是基于动态数据的
55555555 在 这 里 , 你 可 以 在 HTML ( 或 其 它 要 输 出 的 文 本 ) 中 加 入 一 些 特 定 指
令,FreeMarker 会在输出页面给最终用户时,用适当的数据替代这些代码
55555555 下面是一个例子:
!" latestProduct.name

#
55555555 这个例子是在简单的 HTML 中加入了一些由${…}包围的特定代码,这些特定代
码 是 FreeMarker 的 指 令 , 而 包 含 FreeMarker 的 指 令 的 文 件 就 称 为 模 板
(Template)
55555555 至于 user、latestProduct.url 和 latestProduct.name 来自于数据模型(data model)
55555555 数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据
库、文件,甚至于在程序中直接生成
55555555 模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型
55555555 下面是一个可能的数据模型:
$%
&
'( )*+
&
'(!
&
'( *,"
&
'(, *,
55555555 数据模型类似于计算机的文件系统,latestProduct 可以看作是目录,而 user、url
和 name 看作是文件,url 和 name 文件位于 latestProduct 目录中(这只是一个比
喻,实际并不存在)
55555555 当 FreeMarker 将上面的数据模型合并到模板中,就创建了下面的输出:
)*+
*," *,
#
剩余63页未读,继续阅读
资源评论


tianjinghui
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
