freemarker语法

来源:互联网 发布:淘宝店铺搜索排名 编辑:程序博客网 时间:2024/05/21 11:16

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)}