freemarker语法中会遇到的奇葩问题

freemarker语法

1.对url的判断
    <a href="<#if url!=''&&((!url?contains('/#'))&&(!url?contains('#?')))>${url}<#else>javascript:;</#if>" class=""></a>
2.对基本类型的判断,只调用一次接口
    这种写法也可以,等价于"=="但不推荐
    <#if a = 0>
        a is 0
    </#if>
    
    <#assign url = d_link.getUrl()!"null">
    <#if url!="null" && ((!url?contains('/#')) && (!url?contains('#?')))></#if>
3.对引用类型的判断
    <#if list?? && list?size &gt; 0>
        <#assign books = list>
        ...
    </#if>
4.对类型的判断非空
    <#if name!="">${name}</#if>
5.声明一个公共方法
    <#macro methodName(parameter)>
        <div class="className">
            <#assign name = parameter>
            <p>${name}</p>
        </div>
    </#macro>
    调用方法
    <#call methodName(parameter)>
    注意:
        方法圆括号里的参数param可以是任意类型,都可以接收
        在调用其方法时,则按照传入参数类型进行传参,如果是变量则无影响
    用例 
    <#macro test foo bar="Bar" baaz=-1> 
        Test text, and the params: ${foo}, ${bar}, ${baaz} 
    </#macro> 
    <@test foo="a" bar="b" baaz=5*5-2/>
    <@test foo="a" bar="b"/>
    <@test foo="a" baaz=5*5-2/>
    <@test foo="a"/>
    该语法是
        test为方法名,
        foo为变量1(未赋值),bar="Bar"变量2(已赋值为String类型的Bar),baaz变量3(已赋值为number类型的-1)
    调用该方法<@test 变量1赋值 变量2赋值 变量三赋值>
6.对于字符串中:
    <:&lt;
    >:&gt;
    <=:&lte;
    >=:&gte;
    &:&amp;
    ":&quot;
    ∨:&or;
    ’:&prime;
    简版中的&nbsp;用&#160;代替
    截取字符串:util.getSubString(String text,int lenth);text需要被截取的字符串,length是截取的长度
7.?语法
8.jsp的标签语法:
    在freemarker中通常是以getName()类.方法()来获取
    ${xxx.name?html}中是一种jsp的html文本输出EL表达式语法,但不推荐.
    ${xxx.name?html}等价于${xxx.getName()}
    只适合最后输出为string,基本类型,引用类型会报错
9.index_of的判断
    <#assign param1 = '123_a'>
    <#if param1?index_of('_') !=-1>    
        param1有下划线
    </#if>
10.m2M2为多加两位小数点
    <span>#{buyTick;m2M2}</span>:";m2M2"为多加两位小数点语法是: "#{buyTick;m2M2}"注意大括号前面是#
    #{213.111111;m6}其中';m6'是保留小数点6位
11.语法:用来压缩空白空间和空白的行
<#compress>
    。。。

    。。。
</#compress>
输出
...
...
12.字符串[index]语法
当一个String类型的"1234"只需要输出1和4时,可以这样写
<#assign str = "1234">
${str[0]}${str[3]}输出14
${str[1..3]}输出234

13.取得字符串语法
取得字符串长度 
str?length 

大写输出字符 
str?upper_case 

小写输出字符 
str?lower_case 

首字符大写 
str?cap_first 

首字符小写 
str?uncap_first 

去掉字符串前后空格 
str?trim 

每个单词的首字符大写 
str?capitalize 

14.freemarker的last_index_of语法
该语法与java的lastIndexOf('param')语法一致,从最后开始寻找要寻找的参数

 

posted on 2016-11-28 17:21  会写代码的谢霆锋  阅读(448)  评论(0编辑  收藏  举报

导航