Freemarker

1、使用list进行遍历

1.1 基本遍历:

<#list students as info>
     ${info['id']}
     ${info['name']}
     ${info['age']}
</#list><#list students as info>
    ${info.id}<br>
    ${info.name}<br>
    ${info.age}<br>
</#list>

其中students是变量名,它代表一个list。info是我起的别名,遍历的时候,它代表LIST中的一项。

1.2 获取索引值:

<#list students as info>
    ${info_index}
</#list>

索引值的获取是"别名_index"的形式。如果你起的别名是user那么就用“user_index”。
需要说明的是索引值是从0开始的。

1.3 检查有没有下一个元素:

<#list students as info>            
    <#if info_has_next>
    
       有下一个元素
    <#else>
    
       没有下一个元素
    </#if>
</#list>

检查有没有下一个元素的形式是"别名_has_next",这个跟获取索引值是类似的。
这个语法通常用来判断是不是最后一个元素。而且是配合if来使用。

1.4 如果想获取list里有多少个元素,可以这么写

${students?size}

students是list的变量名。这个可以单独使用,不需要配合<#list>。

1.5 <#break/>可以跳出循环。

<#list students as info>
   <#if info_index == 3>
     <#break/>
   </#if>
   ${info['id']}
   ${info['name']}
   ${info['age']}
</#list>

1.6 排序

排序有三个命令 sort,sort_by,reverse,前两个表示启用排序,默认是升序。reverse表示的是降序。可以配合使用
如果是基本数值,字符串日期,这么写

<#list sequence?sort as item>  
    ...  
</#list>  

如果是对象的话,这么写

<#list students?sort_by("age") as info>
   ${info['id']}
   ${info['name']}
   ${info['age']}
</#list>

这是按照年龄进行升序的意思

如果我们想降序,可以配合reverse来用

<#list students?sort_by("id")?reverse as info>
   ${info['id']}
   ${info['name']}
   ${info['age']}
</#list>

下面给出一个例子

 <#list students?sort_by("id")?reverse as info>
      <#if info_index == 3>
         <#break />
      </#if>
      <tr>
         <td>${info_index}</td>
         <td>
            <#if info_has_next><#else></#if>
          </td>
          <td>${students?size}  </td>
          <td>${info['id']}</td>
          <td>${info['name']}</td>
          <td>${info['age']}</td>
        </tr>
 </#list>

 2. if判断

2.1 判断对象是否存在或者是否为null

<#if user??>
   .......</#if>

上面这段代码判断user??是否为null,如果不为null时才可以执行if里面的内容,为null时则不进到if里面

2.2 判断对象是否存在或者是否为null,或者是否为空

<#if user?? && user!="">
   .......
</#if>

上面是判断user对象如果存在,并且不为null,也不为空,才会进入带if里面

如果后台没有传入user对象,前台也不会报错

2.3 多条件判断

<#if sex=='0'><#elseif sex == '1'><#else>
      保密
</#if>

3.给为null的值赋默认值,也可以避免对象为空的错误

①后台:

model.put("password",null);

前台

${password!"123"}   
前台页面显示123   如果是${password}这样会报错
如果password为null,就以默认值(“!”后的字符)显示。

②后台

model.put("password","");

前台

${password} 
 前台页面不会报错,显示为空
${password!"123"}
 前台页面不会报错,显示依然为空,而不是123

4、<#include>

<#include filename>
<#include filename options>

该标签用于导入文件。option包含下面2种属性:

encoding=”GBK” 编码格式 
parse=true 是否作为ftl语法解析,默认是true,false就是以文本方式引入.注意在ftl文件里布尔值都是直接赋值的如parse=true,而不是parse=”true”

<#include "head.ftl">
<#include "head.ftl" encoding="GBK">

页面显示结果:

这里是头部
杩欓噷鏄�ご閮�
原文地址:https://www.cnblogs.com/jcjssl/p/9453743.html