LinuxForum.Fans
Тема

[Java][JSTL] создание класса для <c:forEach>

Автор: killergti 3 сообщений 3339 просмотров
#90120

Здравствуйте!

Возникла проблема при написании класса для тега forEach

JSP страница

text

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <jsp:useBean id="books" scope="session" class="vanya.BookList" /> ... <c:if test="${inputedFlag}"> <ul> <c:forEach var="book" items="${books}"> <li> <a href="${book.url}">${book.title}</a> </li> </c:forEach> </ul> </c:if>

основной класс:

text

public class Book {
    public String title;
    public String url;

public Book(String new_title, String new_url) { title = new_title; url = new_url; } }

класс-список для основного:

text

public class BookList implements Iterable<Book>
{
    public ArrayList<Book> book_list;

public BookList() { book_list = new ArrayList<Book>(2);

book_list.add(new Book("BookTitle_01","book_01.html")); book_list.add(new Book("BookTitle_02","book_02.html")); }

@Override public Iterator<Book> iterator() { return book_list.iterator(); } }

Подскажите пожалуйста что я делаю не так.

#90121

текст ошибки:

text

HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 55

52: 53: <c:if test="${inputedFlag}"> 54: <ul> 55: <c:forEach items="${books}"> 56: <li> 57: <c:out value="test" /> 58: </li>

Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) 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) root cause

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt; org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) org.apache.jsp.index_jsp._jspService(index_jsp.java:147) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 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) root cause

javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt; org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:255) org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:219) org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:137) javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:227) org.apache.jsp.index_jsp._jspx_meth_c_005fforEach_005f0(index_jsp.java:334) org.apache.jsp.index_jsp._jspx_meth_c_005fif_005f0(index_jsp.java:304) org.apache.jsp.index_jsp._jspService(index_jsp.java:135) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 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) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.

Apache Tomcat/6.0.26

#90136

вопрос решён: необходимо было "заимплементить" Collection

Войдите или зарегистрируйтесь, чтобы ответить.