freemarker语法
- 打印基本类型的object
${object}
如果为null或不存在则不打印
${object!}
也可以给不存在的值一个默认值
${object!"我是默认值"}
可以给括号里的值进行运算
${object+1}
- 打印对象中的值
${User.name}
如果name不存在则这样写
${User.name!}
如果User也可能不存在则这样写,它会先判断User是否存在,再判断name是否存在
${(User.name)!}
- 打印格式化日期
${birthday?string('yyyy-MM-dd')}
- 定义一个变量,并为之赋值
<#assign var="hello" />
<#assign var=[1,2,3,4,5,6] />
- 转译HTML内容
比如在Controller中var是这样写的
mv.addObject("<font color='red'>Hello</font>");
如果我们想输出Hello,而不是标红的Hello,我们应该这样写
${var?html}
- if表达式
<#assign var = 99/>
<#if var == 99>
...
<#elseif var == 88>
...
<#else>
...
</#if>
如果判断的条件可能不存在应该这样写,??表示如果var不存在,…的内容就不会执行
<#if var??>
...
</#if>
或
<#if var?exists>
...
</#if>
还可以进行多条件判断
<#if !((var==99 && var==88) || (var==77)) >
...
</#if>
- switch表达式
<#switch var >
<#case 10>
...
<#break>
<#case 100>
...
<#break>
<default>
...
</#switch>
macro语法(宏指令)
- 定义
<#macro macro_name param1 param2 param3 paramN>
template_code ${param1}
...
<#nested/>
</#macro>
无参
<#macro test>
<font color="red">我是无参数的macro</font>
</#macro>
有参
<#macro test param1 param2>
<font color="red">我是有参数的macro</font>
</#macro>
有默认参
<#macro test param1 param2="java">
<font color="red">我是有参数的macro</font>
</#macro>
有多个参(paramExt是随便写的,你写成aaa都行)
<#macro test param1 param2="java" paramExt...>
<font color="red">我是有多个参数的macro</font>
<font color="red">${paramExt['param3']}</font>
</#macro>
带嵌套的(nested)
<#macro test param1>
<nested param1, "我的nested参数">
</#macro>
- 调用
<@macro_name param1="value1" param2="value2"/>
<@macro_name param1="value1" param2="value2">
nested_template
</@macro_name>
无参
<@test/>
有参
<@test param1="java" param2="c++"/>
有多个参(paramExt是随便写的,你写成aaa都行)
<@test param1='java' param2='hello python' param3='js' param4='nodejs'/>
带嵌套的(nested)(返回的值的个数是可以选择的)(nested 的返回值用,分开)(param1 -> loopVar1, “我的nested参数” -> loopVar2)
输出的是hello java, 我的nested参数
<@test param1="java";loopVar1, loopVar2>
hello ${loopVar1}, ${loopVar2}
</@test>
输出的是hello java
<@test param1="java";loopVar1>
hello ${loopVar1}
</@test>
function语法
- 定义
<#function function_name param1 param2>
<#return param1 + param2>
</#function>
- 调用
${function_name(100,100)}