FreeMarker整理
字符串
html安全输出HTML
xml安全输出xml
cap_first首字符大写
uncap_first首字符小写
capitalize每个单词的首字符大写
lower_case小写输出字符
upper_case大写输出字符
trim去掉字符串前后空格
length取得字符串长度
${str[index]}charAt(index)
${str[first..last]}substring(first,last)
split("str")以str分隔字符串,返回seq
word_list分隔单词,相当于split("")
index_of("str")indexOf(str)
index_of("str",index)indexOf(str,index)
last_index_of("str")lastIndexOf(str)
last_index_of("str",index)lastIndexOf(str,index)
j_string在引号前加"\",可能在代码生成的时候使用
replace("old","new")replaceAll
replace("old","new","规则")replaceAll,规则参数包含:irmscf:i:大小写不区分/f:只替换第一个/r:new是正则表达式
数字
int:取得数字的整数部分(如-1.9?int的结果是-1)
string.number
string.currency
string.percent
#{expr;format}形式可以用来格式化数字,format可以是:
mX:小数部分最小X位
MX:小数部分最大X位
布尔
string("yes","no")
时间
string("yyyy-MM-ddHH:mm:ss")
date日期
time时间
datetime日期+时间
==或=比较是否相等
<#t>去掉左右空白和回车换行
<#lt>去掉左边空白和回车换行
<#rt>去掉右边空白和回车换行
<#nt>取消上面的效果
default("defaultword")如果变量为null或不存在,就输出默认值
exists如果为null或不存在则返回true
if_exists如果存在且不为null则输出,否则不输出
has_content如果存在,不为null,有内容则返回true(字符串为""或列表size=0都表示内容为空)
${r"${foo}"}${r"C:\foo\bar"}被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r
sequences
初始化:
1.[“you”,”me”,”he”]
2.1..100
3.[{“Akey”:”Avalue”},{“Akey1”:”Avalue1”},{“Bkey”:”Bvalue”},{“Bkey1”:”Bvalue1”}]
first返回第一个值;前提条件sequence不能是null
last返回sequence最后一个值
reverse反转sequence的值
size返回sequence的大小
sort按里面的对象toString()的结果进行排序
sort_by(value)按里面的对象的属性value进行排序
hashes
初始化:{“you”:”a”,”me”:”b”,”he”:”c”}
keys返回hash里的所有keys,返回结果类型sequence
values返回hash里的所有value,返回结果类型sequence
web中常用的几个对象
Freemarker的ftl文件中直接使用内部对象:
${Request["a"]}
${RequestParameters["a"]}
${Session["a"]}
${Application["a"]}
以上的内部对象在struts2中如果result的type=freemarker,那么RequestParameters将不会存在
type=freemarker时将会有以下对象:
action代表当前处理请求的action对象
ognlorg.apache.struts2.views.jsp.ui.OgnlTool
strutsorg.apache.struts2.util.StrutsUtil,可用${struts.context}得到当前contextpath
stackcom.opensymphony.xwork2.util.OgnlValueStack
attrattrorg.apache.struts2.util.AttributeMap可得到各个作用域的属性值
application可得到application范围内的属性值
requestorg.apache.struts2.dispatcher.StrutsRequestWrapper得不到request范围内的属性值
在模板里ftl里使用标签
<#assignbean=JspTaglibs["/WEB-INF/struts-bean.tld"]>
<@bean.messagekey="welcome.title"/>
配置web.xml
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>com.opensymphony.webwork.views.freemarker.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
<!—模板载入文件夹,这里相对contextroot,递归获取该文件夹下的所有模板-->
</init-param>
<init-param>
<param-name>NoCache</param-name><!—是否对模板缓存-->
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>ContentType</param-name>
<param-value>text/html</param-value>
</init-param>
<init-param>
<param-name>template_update_delay</param-name>
<!—模板更新时间,0表示每次都更新,这个适合开发时候-->
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>default_encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>number_format</param-name>
<param-value>0.##########</param-value><!—数字显示格式-->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
FreeMarkerTag
is_collection,keys,interpret,is_macro,matches,sort,html,time,index_of,values,right_pad,xml,date,web_safe,eval,is_transform,string,
node_namespace,float,size,cap_first,number,namespace,seq_last_index_of,j_string,seq_index_of,first,new,default,split,sort_by,upper_case,
is_number,last_index_of,long,last,is_directive,starts_with,capitalize,datetime,is_boolean,short,is_hash_ex,ends_with,is_enumerable,chunk,
is_date,byte,trim,is_node,c,exists,chop_linebreak,double,is_indexable,is_string,ancestors,url,replace,uncap_first,is_hash,seq_contains,
is_sequence,contains,substring,left_pad,if_exists,length,has_content,int,is_method,rtf,reverse,groups,lower_case,node_type,js_string,word_list,
root,parent,node_name,children