【问题标题】:Import arraylist to jsp, empty result [duplicate]将arraylist导入jsp,结果为空[重复]
【发布时间】:2012-11-27 21:11:06
【问题描述】:

我有对象的arraylist。从 servlet,我把它放到会话中,就像这样:

session.setAttribute("registrations", rayList);

这里是jsp页面:

<%@page import="java.util.ArrayList" %>
...     
<c:forEach var="book" items="${registrations}"> 
                                <tr> 
                                    <td>${book.bookName}</td> 
                                    <td>${book.bookAmount}</td> 
                                    <td>${book.BookName}</td> 
                                    <td>${book.bookYear}</td> 
                                     </tr> 
                            </c:forEach> 

但是有空,没有错误,什么也没有发生。

但是如果我对简单的变量做同样的事情,一切都很好。

也许我做错了什么?

【问题讨论】:

  • 好吧,你当然不需要导入任何东西。您确定列表实际上有内容吗?您是否正确地包含了 JSTL taglib 声明?
  • 是的,列表有内容。但我不确定正确的 taglib 声明/
  • 检查生成的 HTML 代码。也许一切都在那里,但 CSS 隐藏了你的行。或者 taglib 没有正确声明,您会在生成的 HTML 中看到未处理的 标记。此外,将empty = ${empty registrations} 甚至size = &lt;%= ((java.util.List) session.getAttribute("registration")).size() %&gt; 添加到您的JSP 以检查列表是否存在且非空。
  • 这意味着您没有正确声明核心JSTL taglib。按照我之前发布的链接查看必须添加到 JSP 的内容。

标签: jsp arraylist


【解决方案1】:

问题在于 JSTL 核心 taglib 声明。

要声明 JSTL 核心,只需在 JSP 页面顶部添加:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

【讨论】:

    【解决方案2】:

    也许 getBookName 不是 Book 类中定义的变量?

    确保 Book 类具有为 bookName、bookAmount、getBookName 和 bookYear 定义的所有字段以及 setter 和 getter。

    【讨论】:

    • 是的,getBookName 不是变量。我尝试了不同的方法,忘记编辑了。
    • 还有“书”——它不是一个类,它的对象数组列表。
    • -1。 getBookName 不应该是上述工作的变量。而且也不需要二传手。问题是缺少 getter,会引发异常。
    • @JB Nizet - 编辑前的代码有 ${book.getBookName},因此是这个问题。可能会抛出异常,但他的控制台可能没有显示它,并且可能有日志文件在抱怨?
    • ${book.getBookName} 不需要 getBookName 变量即可工作。它需要一个getGetBookName() getter。 EL 与 Java Bean 属性一起工作。不带字段。这个例外不会被忽视。它会阻止 JSP 的执行,并会在浏览器中显示错误消息。
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2017-09-30
    • 2011-05-14
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多