【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>