- 浏览: 1325693 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
与jsp在HTML页面中嵌入java脚本代码不同,FreeMarker不支持脚本代码。
1.FreeMarker基本对象类型:
保存单值的变量(size,price,)称为scalar(标量). ${root.size}
另外一种变量类型是:sequence(序列).在java中可以用java.util.List来构建序列。
<#list [“one”,”two”]+[“three”,”four”] as user> 序列的连接用+
${user}
</#list>
方法变量:
方法变量基于给出的参数进行计算,然后返回一个结果。
例:<#function avg x y>
<#return (x+y)/2>
<#function>
调用方法:${avg(3,5)}
宏变量:
宏变量可以被用户定义的指令。
Macro指令:
Macro指令在当前名称空间中创建一个宏变量,你可以把宏变量看成是java中没有返回值的方法。
没有参数的宏:
<#macro test>
Test text
</#macro>
调用方法:<@test/>
带有参数的宏:
<#macro test foo bar baaz>
Test text ,and the params: ${foo},${bar},${baaz}
</#macro>
调用宏:<@test foo=”a” bar=”b” baaz=5*5-2/>
Nested指令:
在宏定义体内,nested指令调用了几次,在用户定义指令开始标签和结束标签之间的内容就会被执行几次。
<#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>
</@repeat>
Return指令:
使用return 指令,你可以在任何地主跳出宏定义体。例如:
<#macro test>
Test text
<#return>
Will not be printed.
</#macro>
显示为:Test text
2.指令:
(1)if/elseif/else 指令:
<#if a==3>3
<#elseif a==5>5
<#else>8
</#if>
(2)switch/case/default/break指令:
<#switch value>
<#case 1>1 <#break>
<#case 2>2 <#break>
<#default>3
<#switch>
(3)list/break指令:
<#list sequence as item>
…
</#list>
Item_index:表示当前迭代项在整个循环中的索引。
Item_has_next: 布尔值,用于判断是否是最后一项。
(4)include指令:
Include 指令用于在模板中插入其他文件的内容。
<#include “/common/copyright.ftl” encoding=”GBK”>
(5)import指令:
Import指令用于导入一个库。所谓库,就是在一个模板中使用assign和macro指令创建的可重用的变量的集合。
Footer.ftl内容:
<#assign mail=”zhangsan@sunxin.org”>
<#macro test>
Test
</#macro>
<#import “/lib/footer.ftl” as my>
${my.mail}
<@my.test/>
(6)assign指令:
Assign指令用于创建一个新的变量,或者替换一个现在的变量。
<#assign val=”123”/>
(7)global指令:
Global指令创建的是全局变量,可以在所有的名称空间中使用。
(8)local指令:
Local指令用于创建或替换局部变量。
<#setting locale=”en_US”>
Locale:指定语言环境.
Number_format:指定将数字转换为字符串时使用的数字格式。可以使用预定义的值:number,currency,percent.
Boolean_format:
Date_format,time_format,datetime_format:指定日期转换格式。
Time_zone:
(9)noparse指令:
Noparse指令用于禁止对ftl的解析。
(10)escape和noescape指令:
自动添加转义的表达式。
<#escape x as x?html>
First name: ${firstname}
Last name: ${lastname}
</#escape>
上迷等价于:
First name: ${firstname?html}
Last name: ${lastname?html}
3.Freemarker内置函数:
操作字符串:
(1)substring
截取字符串:${‘abc’?substring(2)} ${‘abc’?substring(0,2)}
(2)cap_first
将第一个单词的首字母转换为大写形式。 ${“green mouse”?cap_first}
(3)uncap_first
将第一个单词的首字母转换为小写。
(4)length
用于返回字符串中字符的数量。 ${“zhangsan”?length}
(5)capitalize
将所有单词的首字母都转换成大写。
(6)date,time和datetime
<#setting locale=”zh_CN”>
<#assign test1=”1998-10-22”?date(“yyyy-MM-dd”)
(7)ends_with
用于判断一个字符串是否由某个子串结尾,返回布尔值。
${“redhead”?ends_with(“head”)?string}
布尔值不能直接输出,需要转换为字符串输出。
(8)html
用于将字符串中的<、>、&替换为它们对应的实体引用。
${“<>&\””?html} 显示:<>"&
(9)index_of
用于在一个字符串中查找某个子串,并返回找到的子串的第一个字符的索引。如果没有找到,则返回-1.
(10)j_string
使用java语言字符串字面量的转义规则对字符串进行转义。
(11)js_string
使用javascript语言中的字符串字面量的转义规则对字符串进行转义。
(12)last_index_of
查找子串,返回最右边的子串的第一个字符的索引。
(13)lower_case
用于将字符串转换成小写。
(14)upper_case
用于将字符串转换为大写。
(15)left_pad
指定字符串的输出长度,左边补空格。
[${“abc”?left_pad(5)}]
[${“abc”?left_pad(5,”*”)}]
(16)right_pad
(17)contains
用于判断一个字符串中是否包含了某个子串。该函数返回布尔值。
<#if “piceous”?contains(“ice”)> test</#if>
(18)number
用于将字符串转换为数字。
${“123.55”?number}
(19)replace
用于将字符串中的一部分替换为另外的字符串。
${“this is a car.”?replace(“car”,”bus”)}
(20)url
url对字符串使用 URL转义
<#setting url_escaping_charset=”UTF-8”>
<#assign x=’a/b c’>
${x?url}
(21)split
拆分字符串
(22)start_with
用于判断一个字符串是否由某个子串开始,返回布尔值。
(23)string (与字符串一起使用)
用于字符串时只是简单的返回字符串。
(24)trim
用于删除字符串首尾的空格。
(25)word_list
查找一个字符串中的所有单词,按照它们出现的顺序返回一个序列。
(26)xml
将xml特殊字符转义:
<转换为<
> >
& &
“ "
‘ '
(27)c
用于将数字转换为字符串
(28)string (与数字一起使用)
<#assing num=42>
${num}
${num?string.number} ${num?string.currency} ${num?string.percent}
${num?string(“,##0.00”)} 数字格式化
(29)string (与日期一起使用)
${date?string(“yyyy-MM-dd hh:mm:ss”)}
4.操作序列:
(1)first
${[“one”,”two”,”three”]?first} 显示:one
(2)last
(3)seq_contains
(4)seq_index_of
(5)seq_last_index_of
(6)reverse
(7)size
(8)sort
(9)sort_by
(10)chunk
<#assign seq=[‘a’,’b’,’c’,’d’,’e’]>
<#list seq?chunk(3) as row>
<#list row as cell> ${cell}</#list>
<#list>
输出结果为:
a b c
d e
<#list seq?chunk(4,’-’) as row>
<#list row as cell> ${cell}</#list>
</#list>
输出结果:
a b c
d e -
5.操作散列:
(1) Keys
返回散列中的所有的key.
<#assign map={“name”:”mouse”,”price”:50}>
<#assign keys=h?keys>
<#list keys as key> ${key}=${map[key]}</#list>
(2) values
<#assign values=map?values>
<#list values as value> ${value}</#list>
缺少值外理操作符:
如果你指定的变量没有定义,或者为null。如果你访问一个为null的变量,那么freeMarker将抛出错误。
在freeMarker中,变量不存或者为null,都被看作是缺少值。
(1) 默认值操作符:!
${val!”abc”}
(2) 缺少值测试操作符:??
<#if val??>
Not null
<#if>
6.Jsp标签支持:
在web.xml文件中配置JspSupportServlet
<servlet>
<servlet-name>jspSupport</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
在模板文件中引入:
<#assign c=JSPTaglibs[“/WEB-INF/tld/c.tld”]>
<@c.out value=”Hello”/>
发表评论
-
struts2 对异常的处理
2015-12-11 19:57 743struts2 对异常的处理 使用自定义类处理异常 ... -
struts/spring/mybatis的整合
2015-10-31 14:19 1078struts/spring/mybatis的整合 1 ... -
struts2 异常处理
2015-06-30 16:10 401异常处理后,能够提供友好的用户界面,而不是一些错误的 ... -
struts2+sring4+mybatis3集成框架(二)
2015-06-30 13:48 7491.jsp自定义标签:分页标签 ... -
struts2 中的OGNL
2015-06-28 08:13 768OGNL是Object-Graph Na ... -
struts2 参数绑定(Jsp获取参数的方法)
2015-06-28 07:31 1651在JSP页面与ACTION之 ... -
struts2 参数绑定(Action接收参数的方法)
2015-06-28 07:26 1243Struts2中Action接收参数的方法主要有以下三 ... -
struts2+sring4+mybatis3集成框架(一)
2015-06-26 08:08 1066struts2.3.24、spring4. ... -
struts2中 # % $ 的区别和用法
2010-09-29 09:15 1116Struts2 中OGNL表达式的用 ... -
struts2 %{#foobar['foo1']} -- %{}的作用
2010-08-31 14:19 1332“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达 ... -
js util
2010-08-02 16:18 1120http://www.ilovejs.net/archives ... -
Struts2集成spring:
2010-08-02 16:08 1223Struts2集成spring: Spring插件通过覆盖S ... -
Struts2提供了多种方式来访问request,session,application
2010-07-30 10:29 1283Struts2提供了两种方式来访问request,sessio ... -
Struts2 标签
2010-07-29 16:33 1266Struts2通用标签: 数据标签: 1. Pro ... -
strtuts2 Request
2010-07-27 10:21 11211.ServletActionContext.getReque ... -
使用Struts2 的result 传递参数
2010-07-27 09:26 15001.当使用type=“redirectAction” 或typ ... -
Struts2 报错
2010-07-23 10:59 1344http://wenku.baidu.com/view/e0f ... -
Struts2类型转换
2010-07-21 15:34 1747Struts2类型转换: 在基于HTTP协议的Web应用 ... -
OGNL表达式
2010-07-21 10:56 1580OGNL表达式: 1. 不要忽略了用于界定整个常量字符串的 ... -
struts2 应用
2009-07-29 13:15 12081.留言本 http://www.blogjava.n ...
相关推荐
本篇将深入探讨如何自定义FreeMarker标签,以扩展其功能并适应特定项目需求。 首先,理解FreeMarker的默认标签语法至关重要。FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件...
而Freemarker则是一种轻量级的、基于模板的Java模板引擎,常用于Web应用中的动态内容生成,比如JSP替代技术。它允许开发者将业务逻辑与页面展示分离,提高代码的可维护性和可读性。 "eclipse的freemarker插件"是指...
`freemarker-2.3.23.jar`是Freemarker库的一个版本,发布于2.3.23,这个版本可能包含了对早期版本的一些改进、新功能或bug修复。 Freemarker的核心概念是模板语言,它是一种声明式的编程方式,允许开发者编写不包含...
赠送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.28.jar"是Freemarker库的一个具体版本,版本号为2.3.28,它是Java的一个可执行的JAR(Java Archive)文件,用于在Eclipse集成开发环境中作为插件使用。 在Freemarker的2.3.28版本中,我们可以...
1. **创建模板**:在Freemarker中,我们需要创建一个`.ftl`(Freemarker Template Language)文件,其中包含静态文本和动态占位符。动态占位符由${}或#{}包裹,用于插入数据模型中的值。例如,`${title}</h1>`会将...
2.3.23是FreeMarker的一个稳定版本,这个版本的官方中文文档提供了全面的指导和说明,帮助开发者更好地理解和使用这个模板语言。 在FreeMarker的核心概念中,它是一个基于数据驱动的模板语言。这意味着,开发者不...
赠送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文档:...
### Velocity与FreeMarker的区别 在IT领域特别是Java开发中,模板引擎是不可或缺的一部分,它们用于将数据模型转换为HTML、PDF、Word文档等格式。在众多模板引擎中,Velocity和FreeMarker是两种非常受欢迎的选择。...
Velocity和Freemarker模板技术比较 模板技术在现代软件开发中扮演着重要角色,而在目前最流行的两种模板技术中, Velocity 和 Freemarker 独占鳌头。在 WebWork2 中,我们可以随意选择使用 Freemarker 或 Velocity ...
Freemarker 简介及标签详解大全 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写。FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker ...
标题:Freemarker 描述:孔浩的Freemarker视频笔记,值得一看! 根据给定的文件信息,我们可以深入探讨Freemarker的相关知识点,包括其基本概念、工作流程以及具体的代码实现。 ### Freemarker基本概念 ...
FreeMarker提供了一种灵活且强大的方式来处理动态内容,尤其适用于Web开发中的视图层。在FreeMarker中实现通用的分页功能是提高Web应用程序性能和用户体验的重要一环。 ### FreeMarker通用分页知识点解析 #### 1. ...
这个示例是关于如何使用Freemarker来生成XML文件,对于初学者来说,理解这个过程有助于掌握Freemarker的基本用法和XML的生成技巧。 在Java中,Freemarker与数据模型结合,通过模板文件生成输出。对于XML生成,首先...
本话题主要探讨的是如何利用可视化div布局来生成FreeMarker模板,并结合Spring MVC 3框架进行应用。下面将详细阐述这些概念及其相关知识点。 1. **FreeMarker模板引擎**:FreeMarker是一个开源的Java模板引擎,它...
本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂...
Freemarker是一个强大的模板引擎,常用于JavaEE应用中的视图层处理,尤其与Struts2等MVC框架配合使用,能实现灵活的动态页面渲染。这个"freemarker Demo"是一个适合初学者的示例项目,旨在帮助新接触Freemarker的...
根据提供的文件信息,我们可以深入探讨FreeMarker的相关知识点及其在网页模板设计中的应用。FreeMarker是一种用Java编写的模板引擎,其主要用途在于帮助开发者高效地生成动态内容,尤其是在Web开发领域有着广泛的...
**SpringBoot集成Freemarker与Shiro框架详解** 在现代Web开发中,SpringBoot因其简洁、高效的特性,已经成为很多开发者的选择。而FreeMarker和Shiro则分别是常用的模板引擎和安全框架,它们能帮助我们构建出功能...