【问题标题】:Check mark on tables (JSTL)表格上的复选标记 (JSTL)
【发布时间】:2015-06-22 09:34:07
【问题描述】:

我有以下课程:

public class User {
    private String username;
    private String password;
    private List<Integer> roles;
    // Getters and Setters
}

我有一个查看当前注册的所有用户的 JSP。所以我希望它是他们的用户名和他们拥有的角色的摘要。角色是包含他们可以查看的页面索引的列表。

例子:

+------------+--------+--------+--------+
| Username   | Page 1 | Page 2 | Page 3 |
+------------+--------+--------+--------+
| user1      |   ✔                 ✔   |
+------------+--------+--------+--------+
| user2      |            ✔        ✔   |
+------------+--------+--------+--------+
| user3      |   ✔                 ✔   |
+------------+--------+--------+--------+

现在这就是我所拥有的:

<table cellpadding= "5">
    <tr>
        <th>Username</th>
        <th>Page 1</th>
        <th>Page 2</th>
        <th>Page 3</th>
    </tr>
  <c:forEach items="${users}" var="user">
    <tr align="left">
        <td>
            <c:out value="${user.username}"/>
        </td>
        /*insert conditional here*/
    </tr>
  </c:forEach>
</table>

【问题讨论】:

  • 对此有任何疑问吗?
  • 你的数据结构是什么?你是如何填充它的?
  • @StefanLindenberg 我不知道如何对 jstl 进行编码,这样如果它可以访问某个页面,它将留下一个复选标记。

标签: java html jsp servlets jstl


【解决方案1】:

由于there is no built-in support in JSTL for list.contains(),您必须回退到每次循环整个列表的黑客攻击,检查当前所需值的存在:

  <c:forEach items="${users}" var="user">
    <tr align="left">
        <td>
            <c:out value="${user.username}"/>
        </td>

        <td>
            <c:forEach var="role" items="${user.roles}">
                <c:if test="${role eq 1}"> ✔ </c:if>
            </c:forEach>
        </td>
        <td>
            <c:forEach var="role" items="${user.roles}">
                <c:if test="${role eq 2}"> ✔ </c:if>
            </c:forEach>
        </td>
        <td>
            <c:forEach var="role" items="${user.roles}">
                <c:if test="${role eq 3}"> ✔ </c:if>
            </c:forEach>
        </td>
    </tr>
  </c:forEach>

这对 JSTL 来说是相当可悲的;我习惯了 OGNL(Struts2 使用)和it would be simply

<s:if test="1 in user.roles"> ✔ </s:if>

也就是说,请注意you should never carry a password like that(也不要携带它)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多