【问题标题】:Iterating over an ArrayList which contains Bean objects with c:foreach,doesn't work使用 c:foreach 遍历包含 Bean 对象的 ArrayList,不起作用
【发布时间】:2014-08-18 07:11:43
【问题描述】:

我在 JSP 中迭代 ArrayList,其中包含 Bean 的对象。我想使用 getter() 从该对象中提取信息。ProductID 是我感兴趣的属性之一。 为此,我使用 JSTL。代码如下:

<c:forEach items="repo" var="element">
 <jsp:useBean id="element"  scope="page" class="com.ResponseBean"/> 
Product:<jsp:getProperty property="ProductID" name="element"/>
</c:forEach>

repo 是包含 ResponseBean 对象的 ArrayList。

List<ResponseBean> repo=new ArrayList<ResponseBean>(10);

ResponseBean的代码如下:

public class ResponseBean implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private String ProductID;
public String getProductID() {
    return ProductID;
}
public void setProductID(String productID) {
    ProductID = productID;
}

但我得到以下异常

HTTP Status 500 - Cannot find any information on property 'ProductID' in a bean of type 'com.ResponseBean'

type Exception report

message Cannot find any information on property 'ProductID' in a bean of type 'com.ResponseBean'

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Cannot find any information on property 'ProductID' in a bean of type 'com.ResponseBean'
org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary.java:824)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1081)
org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:1125)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2427)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1784)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1538)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2427)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2433)
org.apache.jasper.compiler.Node$Root.accept(Node.java:474)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375)
org.apache.jasper.compiler.Generator.generate(Generator.java:3517)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:250)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.52 logs.
Apache Tomcat/7.0.52

哪里出错了?

【问题讨论】:

  • Cannot find any information on property 'ProductID' in a bean of type 'com.ResponseBean' 这几乎是答案:)
  • 在“com.ResponseBean”类型的 bean 中找不到关于属性“ProductID”的任何信息
  • 私有字符串 ProductID; public String getProductID() { return ProductID; }
  • 已经拥有属性 ProductID 的 getter()。
  • @sureshAtta,@NinadPingle 现在告诉我有什么问题吗??

标签: java jsp arraylist jstl


【解决方案1】:

你不需要这样做,你可以简单地使用 EL

<c:forEach items="repo" var="element">
     Product: ${element.productID}
</c:forEach>

【讨论】:

  • 显示异常javax.el.PropertyNotFoundException: Property 'productID' not found on type java.lang.String
  • 请显示ResponseBean 代码,您需要公共getter/setter,所以如果您有一个名为productID 的属性,您需要public String getProductID ()
  • 另外根据您刚才发布的错误信息,repo 似乎是String 的集合而不是ResponseBean
  • repo 包含 ReponseBean 对象。对象具有字符串字段 ProductID。
  • 也许可以清理并重新部署您的 Web 应用程序。
【解决方案2】:

你可以这样使用。

<c:forEach items="repo" var="element">
    <c:out value="${element.productID}">
</c:forEach>

【讨论】:

    猜你喜欢
    • 2013-01-15
    • 2013-08-18
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2015-07-22
    • 2014-06-30
    • 2012-12-23
    相关资源
    最近更新 更多