freemarker中文手册(6)

2019-09-01 13:28

(3)名字空间

? 通常情况,只使用一个名字空间,称为主名字空间

? 为了创建可重用的宏、变换器或其它变量的集合(通常称库),必须使用多名字

空间,其目的是防止同名冲突 ? 创建库

? 下面是一个创建库的例子(假设保存在lib/my_test.ftl中):

<#macro copyright date>

Copyright (C) ${date} Julia Smith. All rights reserved.
Email: ${mail}

<#assign mail = \? 使用import指令导入库到模板中,Freemarker会为导入的库创建新的名字空间,并可以通过import指令中指定的散列变量访问库中的变量:

<#import \<#assign mail=\<@my.copyright date=\${my.mail} ${mail} 输出结果:

Copyright (C) 1999-2002 Julia Smith. All rights reserved.
Email: jsmith@acme.com

jsmith@acme.com fred@acme.com 可以看到例子中使用的两个同名变量并没有冲突,因为它们位于不同的名字空间 ? 可以使用assign指令在导入的名字空间中创建或替代变量,下面是一个例子:

<#import \${my.mail} <#assign mail=\in my> ${my.mail} ? 输出结果: jsmith@acme.com jsmith@other.com ? 数据模型中的变量任何地方都可见,也包括不同的名字空间,下面是修改的库: <#macro copyright date>

Copyright (C) ${date} ${user}. All rights reserved.

<#assign mail = %user}@acme.com\? 假设数据模型中的user变量的值是Fred,则下面的代码: <#import \<@my.copyright date=\${my.mail} ? 输出结果:

Copyright (C) 1999-2002 Fred. All rights reserved.

Fred@acme.com Freemarker - 几个比较实用的例子 - - 用Freemarker做模本语言有一

段时间了,列出几个和JSP或者Velocity相比起来比较方便的用途,目的是引诱更多的人跳上Freemarker这个贼船,

1. String内置的JavaScript转换: js_string

用途:用于JavaScript转义,转换',\换行等特殊字符 模板:

输出:

2.内置的默认值处理:default 用途: 用于处理默认值 模本:

User: ${userLogin.name?default(\

${(employee.department.manager.name)?default(\

输出:

User: Anonymous

注,可以对整个对象树加上(),再用内置处理器这种方便的做法,偶也是最近刚学会的,以前一直用很傻的方法做.....

3. Sequence内置的计数器: xxx_index 用途:显示序号 模板:

<#list employees as e> ${e_index}. ${e.name} 输出:

1. Readonly 2. Robbin

4. Sequence内置的分段器: chunk 用途:某些比较BT的排版需求 模板:

<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']>

<#list seq?chunk(4) as row>

<#list row as cell>${cell}

<#list seq?chunk(4, '-') as row>

<#list row as cell>${cell}


freemarker中文手册(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:湖北蓝田股份有限公司财务报表分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: