使用JSTL forEach迭代ArrayList项

时间:2013-01-04 11:21:30

标签: java jsp jstl

我在运行ArrayList项目时遇到问题,并在JSP文件中显示它们。

这是我的豆子:

public class UsersList {
    private ArrayList<UserDetails> users = new ArrayList<UserDetails>();

    public ArrayList getUsers(  ){
        return users;
    }

    public void setUsers(ArrayList<UserDetails> users){
        this.users = users;
    }
}

用户包含UserDetails,它只是具有3个字符串属性的类:电子邮件,用户名,密码

现在我试图在表格中显示详细信息..首先在index.jsp中我有这些命令:

            UsersList bean = new UsersList();
            bean.setUsers(db.getUsersList()); // getting all user deatils from database into the list
            session.setAttribute("bean", bean);

            RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/adminPage.jsp");
            dispatcher.forward(request, response);

现在在adminPage.jsp上,当我应该显示包含用户详细信息的表时,它什么都不显示。这是代码:

<c:forEach var="current" items="${bean.users}" >
<tr>
    <td>${current.email}</td>
    <td>${current.username}</td>
    <td><input type="checkbox" name="delete" value="${current.email}"</td>
</tr>
 </c:forEach>

知道这里有什么问题吗?感谢。

2 个答案:

答案 0 :(得分:3)

检查您的前缀“c”是否指向正确的标签库。

应该是

  

“http://java.sun.com/jsp/jstl/core”

如果不起作用,请检查填充数据的逻辑是否有错误。

答案 1 :(得分:0)

由于您将对象添加到会话中,因此需要从EL中的sessionScope访问它。

<c:forEach var="current" items="${sessionScope.bean.users}" >
<tr>
    <td>${current.email}</td>
    <td>${current.username}</td>
    <td><input type="checkbox" name="delete" value="${current.email}"</td>
</tr>
 </c:forEach>