zoukankan      html  css  js  c++  java
  • 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')语法一致,从最后开始寻找要寻找的参数
  • 相关阅读:
    [Python]从豆瓣电影批量获取看过这部电影的用户列表
    Matlab插值计算各时刻磁法勘探日变观测值
    [C#]Windows文件分类器小程序
    死磕以太坊源码分析之state
    死磕以太坊源码分析之MPT树-下
    死磕以太坊源码分析之MPT树-上
    死磕以太坊源码分析之txpool
    死磕以太坊源码分析之区块上链入库
    死磕以太坊源码分析之downloader同步
    死磕以太坊源码分析之Ethash共识算法
  • 原文地址:https://www.cnblogs.com/wangji817/p/6110439.html
Copyright © 2011-2022 走看看