`
yimeng528
  • 浏览: 188797 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

freemarker-2

阅读更多
1概念

2指令

if, else, elseif

switch, case, default, break

list, break

include

Import

compress

escape, noescape

assign

global

setting

macro, nested, return

t, lt, rt

3一些常用方法或注意事项

表达式转换类

数字循环

对浮点取整数

给变量默认值

判断对象是不是null

常用格式化日期

添加全局共享变量数据模型

直接调用java对象的方法

字符串处理(内置方法)

在模板里对sequences和hashes初始化

注释标志

sequences内置方法

hashes内置方法

4 freemarker在web开发中注意事项

web中常用的几个对象

view中值的搜索顺序

在模板里ftl里使用标签

如何初始化共享变量

与webwork整合配置

5高级方法

自定义方法

自定义 Transforms

                                 

1概念

最常用的3个概念

sequence   序列,对应java里的list、数组等非键值对的集合

hash       键值对的集合

namespace 对一个ftl文件的引用,利用这个名字可以访问到该ftl文件的资源

2指令

if, else, elseif

语法

<#if condition>

   ...

<#elseif condition2>

   ...

<#elseif condition3>

   ...

...

<#else>

   ...

</#if>

用例

<#if x = 1>

   x is 1

</#if>

<#if x = 1>

   x is 1

<#else>

   x is not 1

</#if>

switch, case, default, break

语法

<#switch value>

   <#case refValue1>

     ...

     <#break>

   <#case refValue2>

     ...

     <#break>

   ...

   <#case refValueN>

     ...

     <#break>

   <#default>

     ...

</#switch>

用例

字符串

<#switch being.size>

   <#case "small">

      This will be processed if it is small

      <#break>

   <#case "medium">

      This will be processed if it is medium

      <#break>

   <#case "large">

      This will be processed if it is large

      <#break>

   <#default>

      This will be processed if it is neither

</#switch>

数字

<#switch x>

   <#case x = 1>

     1

   <#case x = 2>

     2

   <#default>

     d

</#switch>

如果x=1 输出 1 2, x=2输出 2, x=3 输出d

list, break

语法

<#list sequence as item>

...

<#if item = "spring"><#break></#if>

...

</#list>

关键字

item_index:是list当前值的下标

item_has_next:判断list是否还有值

用例

<#assign seq = ["winter", "spring", "summer", "autumn"]>

<#list seq as x>

   ${x_index + 1}. ${x}<#if x_has_next>,</#if>

</#list>

输出

   1. winter,

   2. spring,

   3. summer,

   4. autumn  

include

语法

<#include filename>

or

<#include filename options>

options包含两个属性

encoding=”GBK” 编码格式

parse=true 是否作为ftl语法解析,默认是true,false就是以文本方式引入.注意在ftl文件里布尔值都是直接赋值的如parse=true,而不是parse=”true”

用例

/common/copyright.ftl包含内容

Copyright 2001-2002 ${me}<br>

All rights reserved. 

模板文件

<#assign me = "Juila Smith">

<h1>Some test</h1>

<p>Yeah.

<hr>

<#include "/common/copyright.ftl" encoding=”GBK”>

输出结果

<h1>Some test</h1>

<p>Yeah.

<hr>

Copyright 2001-2002 Juila Smith

All rights reserved. 

Import

语法

<#import path as hash>

类似于java里的import,它导入文件,然后就可以在当前文件里使用被导入文件里的宏组件

用例

假设mylib.ftl里定义了宏copyright那么我们在其他模板页面里可以这样使用

<#import "/libs/mylib.ftl" as my>

<@my.copyright date="1999-2002"/>

"my"在freemarker里被称作namespace

compress

语法

<#compress>

   ...

</#compress>

用来压缩空白空间和空白的行

用例

<#assign x = "     moo   \n\n    ">

(<#compress>

   1 2   3    4     5

   ${moo}

   test only

   I said, test only

</#compress>) 

输出

(1 2 3 4 5

moo

test only

I said, test only)

escape, noescape

语法

<#escape identifier as expression>

   ...

   <#noescape>...</#noescape>

   ...

</#escape>

用例

主要使用在相似的字符串变量输出,比如某一个模块的所有字符串输出都必须是html安全的,这个时候就可以使用该表达式

<#escape x as x?html>

   First name: ${firstName}

   <#noescape>Last name: ${lastName}</#noescape>

   Maiden name: ${maidenName}

</#escape>

相同表达式 

   First name: ${firstName?html}

   Last name: ${lastName }

   Maiden name: ${maidenName?html}

assign

语法

<#assign name=value>

or

<#assign name1=value1 name2=value2 ... nameN=valueN>

or

<#assign same as above... in namespacehash>

or

<#assign name>

   capture this

</#assign>

or

<#assign name in namespacehash>

   capture this

</#assign>

用例

生成变量,并且给变量赋值

给seasons赋予序列值

<#assign seasons = ["winter", "spring", "summer", "autumn"]>

给变量test加1

<#assign test = test + 1>

给my namespage 赋予一个变量bgColor,下面可以通过my.bgColor来访问这个变量

<#import "/mylib.ftl" as my>

<#assign bgColor="red" in my>

将一段输出的文本作为变量保存在x里

下面的阴影部分输出的文本将被赋值给x

<#assign x>

   <#list 1..3 as n>

     ${n} <@myMacro />

   </#list>

</#assign>

Number of words: ${x?word_list?size}

${x}

<#assign x>Hello ${user}!</#assign>      error

<#assign x=” Hello ${user}!”>          true

同时也支持中文赋值,如:

<#assign 语法>

   java

</#assign>

${语法}

打印输出:

java

global

语法

<#global name=value>

or

<#global name1=value1 name2=value2 ... nameN=valueN>

or

<#global name>

   capture this

</#global>

全局赋值语法,利用这个语法给变量赋值,那么这个变量在所有的namespace中是可见的,如果这个变量被当前的assign语法覆盖 如<#global x=2> <#assign x=1> 在当前页面里x=2将被隐藏,或者通过${.global.x}来访问

setting

语法

<#setting name=value>

用来设置整个系统的一个环境

locale

number_format

boolean_format

date_format, time_format, datetime_format

time_zone

classic_compatible

用例

假如当前是匈牙利的设置,然后修改成美国

${1.2}

<#setting locale="en_US">

${1.2} 

输出

1,2

1.2

因为匈牙利是采用“,”作为十进制的分隔符,美国是用“.”

macro, nested, return

语法

<#macro name param1 param2 ... paramN>

   ...

   <#nested loopvar1, loopvar2, ..., loopvarN>

   ...

   <#return>

   ...

</#macro>

用例

<#macro test foo bar="Bar" baaz=-1>

   Test text, and the params: ${foo}, ${bar}, ${baaz}

</#macro>

<@test foo="a" bar="b" baaz=5*5-2/>

<@test foo="a" bar="b"/>

<@test foo="a" baaz=5*5-2/>

<@test foo="a"/>

输出

   Test text, and the params: a, b, 23

   Test text, and the params: a, b, -1

   Test text, and the params: a, Bar, 23

   Test text, and the params: a, Bar, -1

定义循环输出的宏

<#macro list title items>

   <p>${title?cap_first}:

   <ul>

     <#list items as x>

       <li>${x?cap_first}

     </#list>

   </ul>

</#macro>

<@list items=["mouse", "elephant", "python"] title="Animals"/>

输出结果 

<p>Animals:

   <ul>

       <li>Mouse

       <li>Elephant

       <li>Python

   </ul>

包含body的宏

<#macro repeat count>

   <#list 1..count as x>

     <#nested x, x/2, x==count>

   </#list>

</#macro>

<@repeat count=4 ; c halfc last>

   ${c}. ${halfc}<#if last> Last!</#if>

<%@page contentType="text/html;charset=ISO-8859-2" language="java"%>

<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

<html>

   <body>

     <h1><bean:message key="welcome.title"/></h1>

     <html:errors/>

     <html:form action="/query">

       Keyword: <html:text property="keyword"/><br>

       Exclude: <html:text property="exclude"/><br>

       <html:submit value="Send"/>

     </html:form>

   </body>

</html>

模板ftl页面

<#assign html=JspTaglibs["/WEB-INF/struts-html.tld"]>

<#assign bean=JspTaglibs["/WEB-INF/struts-bean.tld"]>

<html>

   <body>

     <h1><@bean.message key="welcome.title"/></h1>

     <@html.errors/>

     <@html.form action="/query">

       Keyword: <@html.text property="keyword"/><br>

       Exclude: <@html.text property="exclude"/><br>

       <@html.submit value="Send"/>

     <http://www.cnblogs.com/ynlxc/archive/2006/10/16/529974.htmlf

分享到:
评论

相关推荐

    freemarker-2.3.31-API文档-中文版.zip

    赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...

    freemarker-2.3.30-API文档-中英对照版.zip

    赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...

    freemarker-2.3.30-API文档-中文版.zip

    赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...

    freemarker-2.3.28.jar

    这个"freemarker-2.3.28.jar"是Freemarker库的一个具体版本,版本号为2.3.28,它是Java的一个可执行的JAR(Java Archive)文件,用于在Eclipse集成开发环境中作为插件使用。 在Freemarker的2.3.28版本中,我们可以...

    freemarker.jar

    freemarker-2-3-18.jar, freemarker-2.1.5.jar, freemarker-2.2.5.jar, freemarker-2.2.8.jar, freemarker-2.3.1.jar, freemarker-2.3.10.jar, freemarker-2.3.11.jar, freemarker-2.3.12.jar, freemarker-2.3.13....

    freemarker-2.3.23jar

    `freemarker-2.3.23.jar`是Freemarker库的一个版本,发布于2.3.23,这个版本可能包含了对早期版本的一些改进、新功能或bug修复。 Freemarker的核心概念是模板语言,它是一种声明式的编程方式,允许开发者编写不包含...

    freemarker-2.3.22

    在这个"freemarker-2.3.22"的压缩包中,包含了Freemarker 2.3.22版本的相关资源,有助于我们深入了解和使用这个库。 首先,`README.txt`通常包含项目的基本信息、安装指南和快速入门等内容。在这个版本中,它可能...

    JavaEE源代码 freemarker-2.3.8

    JavaEE源代码 freemarker-2.3.8JavaEE源代码 freemarker-2.3.8JavaEE源代码 freemarker-2.3.8JavaEE源代码 freemarker-2.3.8JavaEE源代码 freemarker-2.3.8JavaEE源代码 freemarker-2.3.8JavaEE源代码 freemarker-...

    freemarker-2.3.22.jar

    freemarker-2.3.22.jar用于生成word模板核心工具包,非常好用!详细操作使用,请参考我的文章链接:https://blog.csdn.net/qq_45978154/article/details/125065400?spm=1001.2014.3001.5502

    freemarker-2.3.8.jar

    使用`freemarker-2.3.8.jar`时,需要注意的是,由于版本较旧,可能不支持某些新特性或者存在已知的安全问题。在生产环境中,通常推荐使用最新稳定版的Freemarker库,以确保获得更好的性能和安全性。同时,对于大型...

    freemarker-ide-0.9.14

    `freemarker-ide-0.9.14` 是一个针对Freemarker模板语言的集成开发环境插件,旨在提升在MyEclipse中的开发效率和体验。 这个插件版本为0.9.14,可能包含了对Freemarker语法的高亮显示、代码自动完成、错误检查、...

    freemarker-2.3.23-API文档-中文版.zip

    赠送jar包:freemarker-2.3.23.jar; 赠送原API文档:freemarker-2.3.23-javadoc.jar; 赠送源代码:freemarker-2.3.23-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.23.pom; 包含翻译后的API文档:...

    freemarker-2.3.23-中文手册.zip

    这个“freemarker-2.3.23-中文手册.zip”包含了Freemarker 2.3.23版本的详尽中文文档,对于学习和掌握Freemarker的使用非常有帮助。 在Freemarker 2.3.23版中,我们首先会接触到它的核心概念,包括模板(Template)...

    freemarker-2.3.15.tar.gz

    这个"freemarker-2.3.15.tar.gz"文件是Freemarker库的一个版本,版本号为2.3.15,它以tar.gz的压缩格式提供,这是在Unix/Linux系统中常见的归档和压缩方式。 1. **Freemarker核心概念**: - **模板语言**: ...

    freemarker-ide-0.9.14.rar

    2. 解压缩"freemarker-ide-0.9.14.rar"文件,找到`plugins`目录下的`hudson.freemarker_ide_0.9.14`目录。 3. 关闭MyEclipse以防在升级过程中出现冲突。 4. 找到MyEclipse的安装路径,通常在Windows系统中,它位于`C...

    freemarker-2.3.20-API文档-中文版.zip

    赠送jar包:freemarker-2.3.20.jar; 赠送原API文档:freemarker-2.3.20-javadoc.jar; 赠送源代码:freemarker-2.3.20-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.20.pom; 包含翻译后的API文档:...

    apache-freemarker-2.3.26-incubating-bin.tar.gz

    这个"apache-freemarker-2.3.26-incubating-bin.tar.gz"文件是Apache FreeMarker的一个特定版本,即2.3.26,处于孵化器阶段(incubating)。它包含了FreeMarker库的二进制文件和相关的文档,为开发者提供了完整的...

    freemarker-2.3.20-API文档-中英对照版.zip

    赠送jar包:freemarker-2.3.20.jar; 赠送原API文档:freemarker-2.3.20-javadoc.jar; 赠送源代码:freemarker-2.3.20-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.20.pom; 包含翻译后的API文档:...

    freemarker-2.3.23-API文档-中英对照版.zip

    赠送jar包:freemarker-2.3.23.jar; 赠送原API文档:freemarker-2.3.23-javadoc.jar; 赠送源代码:freemarker-2.3.23-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.23.pom; 包含翻译后的API文档:...

Global site tag (gtag.js) - Google Analytics