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

相关推荐