一卓的博客

怕什么真理无穷,
进一寸有一寸的欢喜。

0%

Freemarker 常用命令整理

Freemarker 操作字符串

substring(start,end)从一个字符串中截取子串。

1
2
3
4
5
6
7
8
9
10
11
start:截取子串开始的索引,start 必须大于等于 0,小于等于 end
end: 截取子串的长度,end 必须大于等于 0,小于等于字符串长度,如果省略该参数,默认为字符串长度。
例子:
${'str'?substring(0)} 结果为 str
${'str'?substring(1)} 结果为 tr
${'str'?substring(2)} 结果为 r
${'str'?substring(3)} 结果为
${'str'?substring(0,0)} 结果为
${'str'?substring(0,1)} 结果为 s
${'str'?substring(0,2)} 结果为 st
${'str'?substring(0,3)} 结果为 str

cap_first 将字符串中的第一个单词的首字母变为大写。

1
${'str'?cap_first} 结果为 Str

uncap_first 将字符串中的第一个单词的首字母变为小写。

1
${'Str'?uncap_first} 结果为 str

capitalize 将字符串中的所有单词的首字母变为大写。

1
${'str'?capitalize} 结果为 STR

date,time,datetime 将字符串转换为日期。

1
2
3
4
5
6
7
8
例如:
<#assign date1="2009-10-12"?date("yyyy-MM-dd")>
<#assign date2="9:28:20"?time("HH:mm:ss")>
<#assign date3=" 2009-10-12 9:28:20"?time("HH:mm:ss")>
${date1} 结果为 2009-10-12
${date2} 结果为 9:28:20
${date3} 结果为 2009-10-12 9:28:20
注意:如果指定的字符串格式不正确将引发错误。

ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。

1
2
${"string"?ends_with("ing")?string} 返回结果为 true
注意:布尔值必须转换为字符串才能输出

html 用于将字符串中的 <、>、 &和”替换为对应字符。

1
<>&quot:&amp

index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1。

1
2
3
4
Start 参数用于指定从字符串的那个索引处开始搜索,start 为数字值。
如果 start 大于字符串长度,则 start 取值等于字符串长度,如果 start 小于 0, 则 start 取值为 0。
${"string"?index_of("in") 结果为 3
${"string"?index_of("ab") 结果为-1

length 返回字符串的长度 。

1
${"string"?length} 结果为 6

lower_case 将字符串转为小写。

1
${"STRING"?lower_case} 结果为 string

upper_case 将字符串转为大写。

1
${"string"?upper_case} 结果为 STRING

contains 判断字符中是否包含某个子串。返回布尔值。

1
2
${"string"?contains("ing")?string}  结果为 true
注意:布尔值必须转换为字符串才能输出

number 将字符串转换为数字。

1
${"111.11"?number} 结果为 111.11

replace 用于将字符串中的一部分从左到右替换为另外的字符串。

1
${"strabg"?replace("ab","in")}  结果为 string

split 使用指定的分隔符将一个字符串拆分为一组字符串。

1
2
3
4
5
6
7
<#list "This|is|split"?split("|") as s>
${s}
</#list>
结果为:
This
is
split

trim 删除字符串首尾空格。

1
${" String "?trim}  结果为 String

if else 分支。

1
2
3
4
5
6
7
8
9
10
11
12
13
<#if x == 1>
x is 1
<#else>
x is not 1
</#if>

<#if x == 1>
x is 1
<#elseif x == 2>
x is 2
<#elseif x == 3>
x is 3
</#if>

<#if colm??> 判断字符串不为空或空串。

1
2
3
4
5
6
7
<#if colm??></#if> 判断字符串不为 null
<#if letVo.manageScore!=""></#if> 判断字符串不为空串
<#if letVo.manageScore?? && letVo.manageScore != "">
letVo.manageScore 存在,并且不是空串,输出
<#else>
否则输出
</#if>

freemarker 中对 null 值问题的处理

freemarker 不支持 null,如果值为 null 会报错。可使用如下方法处理:

  • ${name!} 在属性后面加感叹号即可过滤null和空字符串
  • ${age!’0’} 如果 age 为 null,默认给’0’
  • ${tableInfo.tableComment!’${tableInfo.tableName}’} 如果 tableInfo.tableComment 为 null,默认给 tableInfo.tableName

循环 List

1
2
3
<#list tableInfo.columnLists as colm>
private ${colm.javaDataType} ${colm.javaColumnName};
</#list>

include 引入模板

1
<#include "common.ftl"/>
请作者喝杯咖啡吧