JSP表达式语言不从JavaBean呈现属性

时间:2013-12-31 20:15:29

标签: jsp java-ee model-view-controller javabeans el

嗯,这个错误肯定是由我做出某种错误造成的。以下是我的代码。

servlet:

package Servlets;

// import statements

public class AdminResource extends HttpServlet {

    List<userList> users = new ArrayList<>();

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                                throws ServletException, IOException {
        Database db = (Database) getServletContext().getAttribute("db");
        String sql = "select * from TAHMID_NIPS.GROUPS";
        ResultSet rs;
        try {
            rs = db.runSql(sql);
            // int i = 0;
            while (rs.next()) {
                userList user = new userList(rs.getString("USERNAME"), rs.getString("GROUPID"));
                users.add(user);
                /* used a printWriter here to access the bean in the servlet
                out.println(users.get(i).getUserName());
                out.println(users.get(i).getGroupID());
                i++;
                */
            }
            request.setAttribute("users", users);
            request.getRequestDispatcher("userList.jsp").forward(request, response);
        } catch(SQLException ex){}
    }

    // doGet(), doPost(),  getServletInfo() methods..
}

JavaBean类::

public class userList {

    private String GroupID;
    private String UserName;

    public userList(String GroupID, String UserName){
        this.GroupID = GroupID;
        this.UserName = UserName;
    }

    public String getGroupID() {
        return GroupID;
    }

    public void setGroupID(String GroupID) {
        this.GroupID = GroupID;
    }

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String UserName) {
        this.UserName = UserName;
    }
}

调度的JSP视图:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>These are the users in the database!</h1><br>
    <c:forEach var="iterator" items="${users}">
        <c:out value="${iterator.UserName}"/> <br>
    </c:forEach>
</body>
</html>

数据库URL,密码和其他必需信息在web.xml文件中声明,并实现了contextListener类。当数据显示在servlet中时,应用程序正常工作。但是,由于我们是MVC粉丝,当我尝试使用EL访问bean时问题就出现了。无法访问这些字段。

关于数据库:
这是一个名为Groups的表,其中包含两个字段:UserName,GroupID。但是它们都没有在JSP视图中显示。

JSP视图中的EL可能发生了问题。专家,请帮忙。

1 个答案:

答案 0 :(得分:0)

更改名称并使用变量userNamegroupID和类UserList等java命名标准,因为两个名称的getter和setter方法相同。
也改变这条线
userList user = new userList(rs.getString("USERNAME"), rs.getString("GROUPID"));到此 userList user = new userList( rs.getString("GROUPID"),rs.getString("USERNAME")); 由于你的构造函数。