вложенный c: foreach в jstl - PullRequest
2 голосов
/ 06 марта 2011

Я работаю над 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.j.asper.jap.Hap.Hap.Her.destroy (HttpJspBase.java:61) org.apache.jasper.servlet.JspServletWrapper.destroy (JspServletWrapper.java:428) org.apache.jasper.servlet.JspServletWrapper.getServlet (JspServlet.apasj.j.j.j.j.j.j.j.j.jp.jp.jp)servlet.JspServletWrapper.service (JspServletWrapper.java:329) org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:313) org.apache.jasper.servlet.JspServlet.ersp.servlet.http.HttpServlet.service (HttpServlet.java:717)

Ответы [ 2 ]

4 голосов
/ 06 марта 2011

Если dataBean является объектом Page, то я думаю, что изменение вашего JSTL следующим образом сделает его скомпилированным.Я не думаю, что ваш второй forEach вызывал метод, который возвращал объект Collection для итерации.Я полагаю, что третий вложенный forEach может быть удален, потому что вторым вы будете работать с объектами MyBean.

0 голосов
/ 06 марта 2011

Попробуйте заменить второй ряд из

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

до

<c:forEach items="${column1.columnList}" var="column2" varStatus="rowCount">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...