1 (20.10.2010 19:02:06 отредактировано killergti)

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

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

JSP страница

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

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

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

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

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

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();
    }
}

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

2

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

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

3

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