在jstl中嵌套c:foreach [英] nested c:foreach in jstl

查看:245
本文介绍了在jstl中嵌套c:foreach的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用JSTL从一个bean检索值.它的内部包含一个bean,此bean包含另一个bean. 样豆看起来像这样

I am working on JSTL to retrieve values from one bean. It contains one bean inside and this bean contains another bean. sample beans look like this

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尚未编译.

And I need to access MyBean values. How can i retrieve? i tried below way...But Jsp is not compiled.

<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) org.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)

full exception description 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) org.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)

推荐答案

如果dataBean是Page对象,那么我认为按如下所述修改您的JSTL将使其编译.我不认为您的第二个forEach方法正在调用返回Collection对象进行迭代的方法.我相信可以删除第三个嵌套的forEach,因为第二个嵌套的forEach将使用MyBean对象.

If dataBean is a Page object then I think modifying your JSTL as follows will make it compile. I don't think your second forEach was calling a method that returned a Collection object to iterate over. I believe the third nested forEach can be removed because by the second one you will be working with MyBean objects.

   <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>

这篇关于在jstl中嵌套c:foreach的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆