【FreeMarker】03 数据类型 Part2
六、Sequence队列类型
Servlet:
package cn.zeal4j.servlet.freemarker;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
/**
* @author Administrator
* @file IntelliJ IDEA FreeMarker
* @create 2020 09 21 11:21
*/
@WebServlet("fm-03")
public class FtlServlet03 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String[] strings = {"江西", "湖北", "北京", "上海", "广州"};
req.setAttribute("locates", strings);
req.getRequestDispatcher("freemarker-templates/fmt-03.ftl").forward(req, resp);
}
}
模板:
<#-- 遍历数组 -->
<#list locates as locate >
${locate} <br>
</#list>
效果:

<#-- 遍历数组 -->
<#list locates as locate >
取元素值 -> ${locate}, 取索引 -> ${locate?index} <br>
</#list>
<p>取长度${locates?size}</p>
<p>取首个元素 ${locates?first} </p>
<p>取尾个元素 ${locates?last} </p>

<hr>
<#list cityList as city > <#-- 正常遍历 -->
<p>${city?index} ${city} </p>
</#list>
<hr>
<#list cityList?reverse as city > <#-- reverse 只是把顺序倒换了一下 -->
<p>${city?index} ${city} </p>
</#list>
<hr>
<#list cityList?sort as city > <#-- 排序 -->
<p>${city?index} ${city} </p>
</#list>

也可以这样连续调用
<#list cityList?sort?reverse as city > <#-- 降序 -->
<p>${city?index} ${city} </p>
</#list>
处理JavaBean对象的渲染:
public class User implements Serializable {
private static final long serialVersionUID = -1045306424800745671L;
private Integer id;
private String name;
private Integer age;
private Boolean gender;
} // 省略setter & getter ... ,
Servlet携带:
ArrayList<User> users = new ArrayList<>();
for (int i = 1; i < 11; i++) {
users.add(new User(i, "user-" + i, 10 + i, false));
}
req.setAttribute("userList", users);
模板代码:
<table>
<tr>
<th>主键</th>
<th>名称</th>
<th>年龄</th>
<th>性别</th>
</tr>
<#list userList as user >
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.gender?c}</td>
</tr>
</#list>
</table>

也可以使用sort_by进行排序
<table>
<tr>
<th>主键</th>
<th>名称</th>
<th>年龄</th>
<th>性别</th>
</tr>
<#list userList?sort_by("age")?reverse as user >
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.gender?c}</td>
</tr>
</#list>
</table>
7、Hash类型
Servlet转发的Map数据:
Map<String, Object> map = new HashMap<>();
map.put("aaa", "AAA");
map.put("bbb", "BBB");
map.put("ccc", "CCC");
map.put("ddd", "DDD");
map.put("eee", "EEE");
req.setAttribute("map", map);
模板:
<#list map?keys as key >
<p>键 -> ${key}, 由键取值 -> ${map[key]}</p>
</#list>

或者不需要键,直接取Value
<#list map?values as value >
<p>值 -> ${value}</p>
</#list>


浙公网安备 33010602011771号