jsp中使用c:forEach遍历List

想用java写一个简单的用户管理系统,在前端某页面展示所有用户的信息。
后端用request.serAttribute传输List,前端使用c:foreach接收,失败。
后端代码:
①User类的一些get方法:

public String getUname() {  
    return uname;  
}  
public String getUpassword() {  
    return upassword;  
}  
public String getGender() {  
    return gender;  
}  

负责的控制器:

@RequestMapping(value="/allUsers",method=RequestMethod.GET)
public String showAllUsers(HttpServletRequest request,HttpServletResponse response){
    List<User> u = userList.findAll();
    //System.out.println(u.get(1).getUname());
    //System.out.println(u.get(1).getUpassword());
    request.setAttribute("allUsers",u);
    return "manager/allUsers";
}
//被注释掉的两行能成功在控制台输出相应的信息,说明List u是正常的

前端代码:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<body>
    <c:forEach items="${allUsers}" var="user">
        <div>
            用户名:<c:out value="${user.getUname()}" ></c:out><br>
            密 码:<c:out value="${user.getGender()}" ></c:out><br><br>
        </div>
    </c:forEach>
</body>
</html>

Run以后发现无法正确显示信息,而是这样了...
图片描述

郁闷了好久不知道错在哪里,希望得到指点,感谢。

阅读 12.1k
4 个回答

原来是没有加<%@ page isELIgnored="false" %>,默认是true所以不能使用el表达式!

user.属性名,不加get,去掉c:out标签,直接${user.xxxxx}试试

<c:forEach items="${allUsers}" var="user">

    <div>
        用户名:${user.uname}<br>
        密 码:${user.gender}<br><br>
    </div>

</c:forEach>


这样应该就可以了,EL表达式中 对象名.属性名 等价于java中调用get方法

新手上路,请多包涵

<c:forEach items="${allUsers}" var="user">

    <div>
        用户名:<c:out value="${user.uname}" ></c:out><br>
        密 码:<c:out value="${user.gender}" ></c:out><br><br>
    </div>

</c:forEach>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题