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">
页面显示结果:
这里是头部
杩欓噷鏄�ご閮�