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

 

posted @ 2020-09-21 20:57  emdzz  阅读(115)  评论(0)    收藏  举报