当前位置:首页 > 开发 > 编程语言 > 模板引擎 > 正文

Freemarker tips

发表于: 2015-01-05   作者:darrenzhu   来源:转载   浏览次数:
摘要: 三目运算 –条件运算符     用freemarker时写三目运算,开始一直这样写,${true?3:4}, 不行,再换成:  ${true?'3':'4'},汗,还是不行,然后想起freemarker输出字符串后面要带上?string, 所以又写上${true?'3'string:'4'string},汗,一样不行,最后问以前的同事(大名高登峰,未婚,
三目运算 –条件运算符
    用freemarker时写三目运算,开始一直这样写,${true?3:4}, 不行,再换成:  ${true?'3':'4'},汗,还是不行,然后想起freemarker输出字符串后面要带上?string,
所以又写上${true?'3'string:'4'string},汗,一样不行,最后问以前的同事(大名高登峰,未婚,嘎嘎),原来是这样写:
Java代码  
1. ${true?string('5','7')} 


Check null
<#if updatedTaxonomyItems??>
Do something if not null
</#if>
<#else>
Do something if null
</#else>

Use Default value if null
${updatedItem.parentNodeId!"NULL"}

关于得到list长度的问题
取得list的长度:${fields?size}。

而使用判断其长度的时候,

<#if fields?size>0 >
</#if>

竟抛出错了,说不是boolean类型,

Java backtrace for programmers:
----------
freemarker.core.NonBooleanException: Error on line 132, column 22 in viewEntity_js.ftl
Expecting a boolean (true/false) expression here
Expression fields?size does not evaluate to true/false
it is an instance of freemarker.template.SimpleNumber
         at freemarker.core.Expression.isTrue(Expression.java:150)

晕,试了几下,原来加个刮号就没问题了。

<#if (fields?size>0) >
</#if>

关于Map
非常重要的一点,你的Map的key不能是一个自定义的Object,否则在map[key]时总会报map[key]的值为空的错。虽然没有看到官方文档说key不能是Object,但我的实践是不行,最终我该用Key为string,value 为List<ClassA>才work,虽然key不能是自定义的Object,但value可以是任意的object.

遍历Map,下面的例子是遍历Map<String, List<ClassA>> map类型的map,注意要使用map[key]来获取value, map.get(key)报错,当然有可能我碰到的错误跟Freemarker的版本有关,也许某些版本就没有这些问题。

<#if (latestAllocationsMap??)>
    <#list latestAllocationsMap?keys as key> 
        <#assign allocations=latestAllocationsMap[key]>
           <#if (allocations?size>0) >
               <td align="left">
                    ${key?if_exists}
                   <#list allocations as allocation>
                       ${allocation.allocId?if_exists}
                   </#list>
               </td>
           </#if>           
    </#list> 
</#if>


关于自增长操作符
字符串列子
<#assign allocationId= "">
<#list allocations as allocation>
	<#assign allocationId= allocationId + " " + allocation.allocId>
</#list>

Freemarker tips

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

推荐文章
3 tips
4 Tips
5 Tips
6 Tips
7 Tips
8 Tips
9 Tips
10 tips
11 Tips
12 Tips
13 Tips
14 Tips
15 tips
16 Tips
17 Tips
18 Tips
19 TIPS
20 TIPS
编辑推荐
在Web应用中,有时需要按照固定的模板将数据导出到Word,如流程审批单,在流程处理完成后将处理过程
为了使项目jsp代码更加美观化,今天在Eclipse上安装Freemarker的插件,这里备忘纪录一下.首先在 http:
什么是FreeMarker? FreeMarker 是一个模版引擎,一个基于文本的模板输出工具(生成任意的HTML表单代
一、类型 1、标量: 标量存储单一的值 (1)字符串:在模板中,字符串必须放在引号内,数字是不用放
1-What to do when I don't know the usage of a linux command 1、 type command 2、 help command
Gmail Beta: First Impressions How I ‘Imported’ archived email into Gmail Gmail Ti
一、水平居中 <body> <div id="wrapper"> ... </div> </body>> body { t
  phpstorm对于使用PHP开发web的人员来说,是一个非常不错的编辑开发IDE,以前用过sublime,但是
在JoyTunes工作期间,我们在开发最新一版的钢琴应用程序,对程序的UI做了大量的重新设计,因而也在I
Gmail Beta: First Impressions How I ‘Imported’ archived email into Gmail Gmail Ti
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号