2011-03-06 50 views
2

我正在JSTL上检索一个bean的值。它包含一个bean,这个bean包含另一个bean。 样品豆类这个样子nested c:foreach in jstl

Page.java

public class Page { 
    private List<Column> columnList; 
    private String emailAddr; 
    public List<Column> getColumnList() { 
     return columnList; 
    } 
    public void setColumnList(List<Column> columnList) { 
     this.columnList = columnList; 
    } 
    public String getEmailAddr() { 
     return emailAddr; 
    } 
    public void setEmailAddr(String emailAddr) { 
     this.emailAddr = emailAddr; 
    } 
} 

Column.java

public class Column { 
    private List<MyBean> columnList; 
    public String getDispCatg(){ 
     return dispCatg; 
    } 

    public void setDispCatg(String dispCatg) { 
     this.dispCatg = dispCatg; 
    } 

    private String dispCatg; 
    public List<MyBean> getColumnList() { 
     return columnList; 
    } 

    public void setColumnList(List<MyBean> columnList) { 
     this.columnList = columnList; 
    } 

} 

MyBean.java

public class MyBean { 
    private static int i=0; 
    private String value; 
    public String getValue() { 
     return String.valueOf(++i); 
    } 
    public void setValue(String value) { 
     this.value = value; 
    } 
    public String getDescription() { 
     return "FirstCheckBox"+i; 
    } 
    public void setDescription(String description) { 
     this.description = description; 
    } 
    private String description; 
    public MyBean() { 
     // TODO Auto-generated constructor stub 
    } 

} 

,我需要访问为myBean值。我如何检索? 我尝试下面的方式...但Jsp不编译。

<c:forEach items="${dataBean.columnList}" var="column1" varStatus="rowStatus"> 
     <c:forEach items="${column1}" var="column2" varStatus="rowCount"> 
      <c:forEach items="${column2}" var="bean" varStatus="rowCount"> 
       <div>hello 1..2..3</div> 
      </c:forEach> 
     </c:forEach> 
    </c:forEach> 

充分异常描述 java.lang.NoSuchFieldError的:deferredExpression org.apache.taglibs.standard.tag.common.core.ForEachSupport.release(ForEachSupport.java:178) org.apache.jasper。 runtime.TagHandlerPool.release(TagHandlerPool.java:166) org.apache.jsp.BeanLoad_jsp._jspDestroy(BeanLoad_jsp.java:39) org.apache.jasper.runtime.HttpJspBase.destroy(HttpJspBase.java:61) 组织.apache.jasper.servlet.JspServletWrapper.destroy(JspServletWrapper.java:428) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:139) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

+2

* JSP不编译*>你有什么错误呢?会发生什么呢? – BalusC 2011-03-06 04:19:47

+0

500错误即将到来..javax.servlet.ServletException:java.lang.NoSuchFieldError:deferredExpression – 2011-03-06 04:29:26

+0

完全异常描述 – 2011-03-06 04:30:24

回答

4

如果是公司Databeans Page对象话,我想修改您的JSTL如下将使编译。我不认为你的第二个forEach正在调用返回一个Collection对象迭代的方法。我相信第三个嵌套的forEach可以被删除,因为第二个你将使用MyBean对象。

<c:forEach items="${dataBean.columnList}" var="column" varStatus="rowStatus"> 
      <c:forEach items="${column.columnList}" var="mybean" varStatus="rowCount"> 
       <div>hello 1..2..3..<c:out value="${mybean.description}"/></div> 
      </c:forEach> 
    </c:forEach> 
0

尝试从

<c:forEach items="${column1}" var="column2" varStatus="rowCount"> 

更换第二排

<c:forEach items="${column1.columnList}" var="column2" varStatus="rowCount">