freemarker list用法

在freemarker中list是经常用到的

比如在页面中需要有个单纯的遍历(以年度为例),无需调用任何数据,很方便

代码:

这样会遇到一个问题,当数据超过3位的时候,freemarker会自动用逗号截取 格式如:2,008

如何解决呢?

1> 加.toString(),如:${(userId).toString()}
2> 加?c,如:${(userId)?c}
3> freemarker配置文件freemarker.properties加上number_format=#

判断是否为空:

1.<#if xx[0]?exists>

2.<#if xx??>

3.<#if xx?default("xxx")>

不然当没有数据的时候 ,很大很大一个黄页就等着你了

序列号:

有时候页面的table需要在第一列显示序号  只需要使用 _index 即可  不过是从0开始的 你可以+1 比如:

<#list list as a>

${a_index+1}

</#list> 

数据类型转换:

${xx?string} //字符串
${xx?number}//整数
${xx?currency}//小数
${xx?percent}//百分比

截取字符串长度:

有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的列子就可以自定义显示的长度

< lt. <= lte. > gt. >= gte

<#if jstbqkVO.gzdd?length lt 8>
           <a href>${jstbqkVO.gzdd?default("")}</a>
      <#else>
           <a href title="${jstbqkVO.gzdd}">${jstbqkVO.gzdd[0..3]?default("")}...</a>
</#if>

意思就是如果这个字符串的长度小于8,那么就正常显示,反之则取4位

嵌套list:

很多时候,数据库里存储的都是编号,而页面上需要显示的汉字,而且不在一张表里,看列子

<#list jsskList as jsskVO>

<#list kcList as kcVO>
           <#if kcVO.kch=jsskVO.kch> (kcVO里有编号和名称,而jsskVO里只有编号)
                  ${kcVO.kcm} 
           </#if>
   </#list>

</#list>

排序:

1.升序.sort_by()

<#list list?sort_by("字段") as x>
</#list>

2.降序.sort_by()?reverse

<#list list?sort_by("字段")?reverse as x> 
</#list>

去空格:

${xx?trim}

格式化日期:

${date?string("yyyy-MM-dd HH:mm:ss ")}
${date?string("yyyyMMdd ")}


1. freemarker获取list的size : 

Java 

Java代码   收藏代码
  1. ArrayList<String> list = new ArrayList<String>();  

Freemaker 
Javascript代码   收藏代码
  1. ${list?size}  


2. list的遍历: 

Javascript代码   收藏代码
  1. <#list animals as being>  
  2.     <tr>  
  3.         <td>${being.name}${being.price}<td>  
  4.     </tr>  
  5. </#list>  


3.list遍历中的下标序号: 

_index是list的一个属性 
Javascript代码   收藏代码
  1. <#list list as a>  
  2.      ${a_index}  
  3. </#list>   


4. list的嵌套: 
Javascript代码   收藏代码
  1. <#list jsskList as jsskVO>  
  2.    <#list kcList as kcVO>  
  3.            <#if kcVO.kch=jsskVO.kch> (kcVO里有编号和名称,而jsskVO里只有编号)  
  4.                   ${kcVO.kcm}   
  5.            </#if>  
  6.    </#list>  
  7. </#list>  


5. list排序: 
      升序 .sort_by() 
Javascript代码   收藏代码
  1. <#list list?sort_by("字段") as x>  
  2. </#list>  


     降序 .sort_by()?reverse 
Javascript代码   收藏代码
  1. <#list list?sort_by("字段")?reverse as x>   
  2. </#list>  


6. list标签遍历map: 
Javascript代码   收藏代码
  1. <#list avertisementTypeMap?keys as key>   
  2.     <option value="${key}">${avertisementTypeMap[key]}</option>   
  3. </#list>  

FreeMarker是一种模板引擎,它可以帮助开发者将数据和模板进行关联,生成最终的文本输出。下面是FreeMarker用法: 1. 安装FreeMarker 可以通过Maven或手动下载的方式安装FreeMarker。 2. 准备数据模型 在使用FreeMarker前,需要将数据模型准备好。数据模型可以是Java对象、Map、List等。例如,我们可以创建一个Java对象,包含name和age属性: ``` public class Person { private String name; private int age; // getter and setter methods } ``` 然后创建一个Person对象: ``` Person person = new Person(); person.setName("John"); person.setAge(25); ``` 3. 准备模板 使用FreeMarker需要准备一个模板文件,模板文件中包含了需要填充数据的占位符。 例如,我们可以创建一个模板文件,包含${name}和${age}占位符: ``` Name: ${name} Age: ${age} ``` 4. 填充数据 在填充数据前,需要将数据模型和模板进行关联。 ``` Configuration cfg = new Configuration(Configuration.VERSION_2_3_28); cfg.setClassForTemplateLoading(getClass(), "/templates"); Template template = cfg.getTemplate("person.ftl"); ``` 其中,templates是模板文件所在的目录,person.ftl是模板文件的名称。 然后将数据模型和模板进行关联: ``` Map<String, Object> data = new HashMap<>(); data.put("person", person); Writer out = new OutputStreamWriter(System.out); template.process(data, out); out.flush(); ``` 其中,data是一个Map对象,包含了需要填充到模板中的数据。在模板中使用${person.name}和${person.age}可以获取到数据模型中的name和age属性。 5. 输出结果 最后,将填充好数据的模板输出到控制台或文件中: ``` Name: John Age: 25 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值