1.freemarker中Request,Session的用法:
java块:request.getSession().setAttribute("qq","http://www.qq.com");
request.setAttribute("qq", "http://www.qq.com");
freemarker代码:
<#if Session ["qq"]?exists>//Request的用法同session
<#if Session ["qq"]=="http://www.qq.com">
<#else>
</#if>
<#else>
</#if>
而通常情况下,Request和Session均可省去不写:
<#if qq?exists>//Request的用法同session
<#if qq=="http://www.qq.com">
<#else>
</#if>
<#else>
</#if>
但是如果他们都设有相同的key值,那么在页面中显示的话,就就应该把他们加上去。
2.freemarker中导入样式表的写法,已经javascript的写法注意:
引入样式表:<LINK href="*.css" type=text/css rel=stylesheet>
添加样式表:
<style type="text/css">
.imgs img{width:150px ; height:70px;}
</style>
javascript块:
<script language="JavaScript" >
function method(para){
}
</script>
3.判断集合:
集合的集合:
<#if voteWraperObj.itemList?size gt 0>
<#list voteWraperObj.itemList as voteList>
</#list> </#if>
对象的集合:
<#if softDetail?size gt 0>
<#list softDetail as softlist>
</#list>
</#if>
关于Session中存放的对象的属性的读取:
<#if Session ["userweb"].member?exists>
4.switch/case的用法:
<#switch type>
<#case "down">
<#include "softdown.ftl">
<#break>
<#case "photo">
<#if para=="photoSquare">
<#include "photo.ftl">
<#elseif para=="photoWidth">
<#include "photo.ftl">
<#else>
</#if>
<#break>
</#switch>
5.时间类型在页面是如何才能正常显示的:
如:${newslist.pubTime?string('yyyy-MM-dd')}
${newslist.pubTime?string("yyyy-MM-dd HH:mm:ss")}
6.判断存在与否,以及是否有效:
如:<#if goodslist.f_goods_url?exists&&goodslist.f_goods_url?length gt 0>
7.“default”是如何使用的:
如: ${qq?default("http://www.qq.com")}
即如果属性qq不存在,那么就是要default中的值替代。
8.<#assign>的用法:
<#assign count=0>
<#assign str="12345">
<#list 0..9 as i>
<#assign count=count+1>
<#if i gt str?length>
${count}
</#if>
</#list>
输出为:7 8 9 10
9.freemarker中如何截取字符串:
方法1:?substring(,)||方法2:[,]
区别:前者包头不包未,后者包头又包未:
实例:<#assign count=0>
<#assign str="12345">
${str[count..count+1]}
${str?substring(count,count+1)}
输出为:12,1
<#assign count=0>
<#assign str="12345">
${str[count..count]}<br/>
${str?substring(count,count+1)}
这时输出均为:1
10.freemarker页面中如果包含
<#assign html=JspTaglibs["/WEB-INF/struts-html.tld"]>
<@html.base/>
那么它所指向的路径都是相当路径(相对于当前文件)。
11.如何让freemarker模板当html来使用呢:(完整的页面如下)
<html>
<head>
<#assign html=JspTaglibs["/WEB-INF/struts-html.tld"]>
<#assign bean=JspTaglibs["/WEB-INF/struts-bean.tld"]>
<#assign logic=JspTaglibs["/WEB-INF/struts-logic.tld"]>
<@html.base/>
<link href="css/main.css" rel="stylesheet" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset="utf-8">
</head>
<body>
---------freemarker代码块
</body>
</html>
12.?使用内建的int(后面讲述)获得整数部分
如${1.1?int} = 1
13.比较操作符:
1使用=(或==,完全相等)测试两个值是否相等,使用!= 测试两个值是否不相等。
2.对数字和日期可以使用<、<=、>和>=,但不能用于字符串
3.由于Freemarker会将>解释成FTL标记的结束字符,所以对于>和>=可以使用括号来避免这种情况,例如<#if (x > y)>,另一种替代的方法是,使用lt、lte、gt和gte来替代<、<=、>和>=
14.内建函数:
html:对字符串进行HTML编码
cap_first:使字符串第一个字母大写
?? lower_case:将字符串转换成小写
?? upper_case:将字符串转换成大写
trim:去掉字符串前后的空白字符
?? size:获得序列中元素的数目
int:取得数字的整数部分(如-1.9?int的结果是-1)
15.根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation
如:<#setting number_format="currency"/>
<#assign answer=42/>
输出结果是:$42.00
单个Interpolation:
${answer?string.number}
${answer?string.currency}
${answer?string.percent}?
16. 插入日期值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation
如:${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}
17.Session中设置对象属性的判断:
Session ["userweb"].member?exists
18. 插入布尔值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation.
如:<#assign or=true/>
${or?string("You are right!", "You are wrong!")}
输出为:You are right!
19. 数字Interpolation的#{expr; format}形式可以用来格式化数字,format可以是:
? mX:小数部分最小X位
? MX:小数部分最大X位
如:<#assign x=2.582/>
<#assign y=4/>
#{x; M2} <#-- 2.58 -->
#{y; M2} <#-- 4 -->
#{x; m1} <#-- 2.6 -->
#{y; m1} <#-- 4.0 -->
#{x; m1M2} <#-- 2.58 -->
#{y; m1M2} <#-- 4.0 -->
20.用户定义指令:宏
<#macro greet person>
<font size="+2">Hello ${person}!</font>
</#macro>
作为用户定义指令使用宏变量时,使用@替代FTL标记中的#
<@greet person="Fred"/> and <@greet person="Batman"/>
输出为:Hello Fred! and Hello Batman!
21: 宏可以有多参数:
<#macro greet person color>
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro
可以这样使用该宏变量:
<@greet person="Fred" color="black"/> , 其中参数的次序是无关的,只能使用在macro指令中定义的参数,并且对所有参数赋值,所以下面的代码是错误的:
只能使用在macro指令中定义的参数,并且对所有参数赋值,多了或者少了都会出错的,完全赋值。如:<@greet person="Fred"/>为错。
可以在定义参数时指定缺省值,
<#macro greet person color="black">
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
这样<@greet person="Fred"/>就正确了,宏的参数是局部变量,只能在宏定义中有效。
22. 嵌套内容
? 用户定义指令可以有嵌套内容,使用<#nested>指令执行指令开始和结束标记之间的模板片
<#macro border>
<table border=4 cellspacing=0 cellpadding=4><tr><td>
<#nested>
</tr></td></table>
</#macro>
这样使用该宏变量:
<@border>The bordered text</@border>
输出结果:
<table border=4 cellspacing=0 cellpadding=4><tr><td>
The bordered text
</tr></td></table>
<#if indexL_has_next>
分享到:
相关推荐
Freemarker是一个强大的Java模板引擎,常用于动态生成HTML或其他类型的文档。在使用Freemarker的过程中,遇到乱码问题...通过实践和学习,你将能够有效地避免和解决Freemarker的乱码问题,提升你的开发效率和代码质量。
Freemarker是一个强大的开源模板引擎,常用于Java应用程序中生成动态HTML、XML或其他文本格式的输出。...在实际开发中,根据项目需求和团队规范,灵活运用这些知识,可以构建出高效、可维护的视图层。
描述:孔浩的Freemarker视频笔记,值得一看! 根据给定的文件信息,我们可以深入探讨Freemarker的相关知识点,包括其基本概念、工作流程以及具体的代码实现。 ### Freemarker基本概念 Freemarker是一个用Java语言...
FreeMarker 是一个强大的Java模板引擎,常用于生成HTML页面或其他动态文本。...下面将详细解释FreeMarker的一些关键语法和特性,以及在实际应用中...在实际开发中,熟练掌握这些知识点能帮助你更高效地构建动态模板系统。
这个“freemarker笔记”很可能是一个关于理解和使用FreeMarker模板语言的学习资料,其中可能涵盖了FreeMarker的基本概念、语法、以及在实际开发中的应用。 FreeMarker的核心概念是模板和数据模型。模板是HTML或者...
3. **Freemaker_入门+深入+开发指南+学习笔记.doc**: 这份文档全面地从入门到深入,一步步引导读者理解Freemarker。可能包含设置环境、创建第一个模板、模板的编译与执行,到如何与Java后端数据模型进行交互。深入...
FreeMarker是一款强大...总的来说,FreeMarker是一款强大、灵活的模板引擎,它提供了丰富的功能和良好的可扩展性,适用于各种文本生成场景,尤其是在构建Web应用的视图层时,能够有效地提升开发效率和代码的可维护性。
通过这些资源,你可以系统地学习JEECMS的各个方面,从基础操作到高级开发,再到FreeMarker的运用,都能得到全面的指导。不过,请注意,由于这些资源来源于网络,可能存在版本差异或更新不及时的情况,因此在学习时...
- `Freemaker_入门+深入+开发指南+学习笔记.doc`:这份文档提供了从基础到高级的Freemarker学习路径,包括基本语法、模板设计原则和实践案例。 - `freemaeker全面教程.doc`:这份教程全面覆盖了Freemarker的各个...
首先,我们来看《Freemarker开发指南》。这是一份详尽的教程,涵盖了Freemarker的基本概念、安装、配置以及如何在实际项目中使用。它会介绍如何创建模板,如何在模板中插入和控制变量,以及如何使用条件语句和循环...
- **分离关注点**:FreeMarker遵循MVC模式,将视图(模板)与控制器(Java代码)分离,使得开发更加清晰。 - **安全性**:模板仅能访问数据模型提供的数据,不能直接操作Java对象,降低了安全风险。 - **可扩展性...
1. **Freemaker_入门+深入+开发指南+学习笔记.doc**:这份文档通常包含了Freemarker的基础概念、快速入门教程、进阶技巧以及开发实践指导。通过阅读,我们可以了解到如何创建模板、变量的使用、控制结构(如if/else...
1. `freemarker学习笔记.doc`:这可能是一份详细的FreeMarker学习文档,涵盖了FreeMarker的基础知识和高级特性。 2. `FullFieldTag.java`、`FullFieldCheckboxTag.java`:这两个文件可能是自定义的FreeMarker标签...
Java和FreeMarker是Web开发中的两个重要工具,它们在构建动态网页方面发挥着关键作用。FreeMarker是一个模板引擎,主要用于生成HTML或其他类型的文本输出,而Java则是用来编写服务器端逻辑的强大编程语言。在这个...