javax.el.PropertyNotFoundException:在类型java.lang.String上找不到属性'rollno'

时间:2012-12-05 19:41:46

标签: java java-ee

我经历了一些有关此例外的链接。我不知道动作类是否有问题或jsp。

我的DAO是:

         {
            ReleaseData releaseData = new ReleaseData();
            releaseData.setRollno(resultSet.getInt("rollno"));
            releaseData.setName(resultSet.getString("name"));
            releaseData.setAge(resultSet.getInt("age"));
            myDataList.add(releaseData);
            System.out.println("the List has---"+myDataList);
        }

我的Servlet是:

            public class DisplayServlet extends HttpServlet
          {
                public void doGet(HttpServletRequest request ,HttpServletResponse  response) throws ServletException,IOException
{
    List<ReleaseData> myDataList = new ReleaseDataDAO().getReleaseData();
    request.setAttribute("myDataList", myDataList);
    request.getRequestDispatcher("/showData.jsp").forward(request, response);
}
}

这是我的jsp:

<c:forEach items="$(myDataList)" var="data">
             <tr>
               <td>${data.rollno}</td>
                 <td>${data.name}</td>
                <td>${data.age}</td>

              </tr>
             </c:forEach>

1 个答案:

答案 0 :(得分:3)

嗯,我刚才注意到,你使用的是$()而不是${},jsp不是jQuery:P $(myDataList)没有被解释为EL表达式并成为一个字符串,请改为:${myDataList}

此外:

你需要创建getter和setter方法,在你提供的代码中,我可以看到rollno的set方法,但是没有get方法,它们也必须是公共的

public class ReleaseData{
    private int rollno = 0;
    private String name = "";
    private int age = 0;

    public int getRollno(){ return rollno; }
    public void setRollno(int rollno){ this.rollno = rollno; }

    public int getAge(){ return age; }
    public void setAge(int age){ this.age= age; }

    public String getName(){ return name; }
    public void setName(String name ){ this.name = name; }

}

此外,总是很好地逃避人类可以输入的任何数据。

<c:forEach items="${myDataList}" var="data">
 <tr>
   <td><c:out value="${data.rollno}" /></td>
     <td><c:out value="${data.name}" /></td>
    <td><c:out value="${data.age}" /></td>

  </tr>
 </c:forEach>