【问题标题】:Iterating database results in JSP在 JSP 中迭代数据库结果
【发布时间】:2013-03-18 12:43:39
【问题描述】:

场景:

我在类DatabaseDAO 中有一个方法gerRow(),它获取一些表行并将它们添加到类Row 的对象中。

每个 Row 对象都被添加到一个 ArrayList 中。 getRow() 方法返回该 ArrayList。

问题:

我的问题是如何迭代文本结果生成 JSP?我打算使用 JSTL 标签<c:out><c:ForEach>。我认为这是唯一的选择。我该怎么做?

遇到的困难:

我调用的方法返回一个 ArrayList。 ArraList 具有行对象。然后我必须将该行中的每一列分开才能打印出来。

Row对象属于Row类,有Row.getColum1、Row.getColum2、Row.getColum3等。

示例:

<jsp:useBean id="xxxxxxxxxxxx" class="xxxxxxxxxxxx" scope="request" />
<c:forEach var="xxxxxxxxxxxx" items="${xxxxxxxxxxxx}">
    <c:out value="${xxxxxxxxxxxx.xxxxxxxxxxxx}" />
    <c:out value="${xxxxxxxxxxxx.xxxxxxxxxxxx}" />
</c:forEach>

【问题讨论】:

  • 这个问题基本上已经在一本理智的 JSP 书籍/教程的第 1 章中得到了回答。我建议从我们的标签 wiki 页面开始,开始使用一些体面的 Hello World 示例和指向理智教程/资源的链接。将鼠标放在例如顶部[jsp] 标签,直到出现黑色信息框,然后单击其中的 info 链接。

标签: jsp jstl


【解决方案1】:

我猜你不知道x 是什么。这称为expression language

你不需要这个&lt;jsp:useBean id="xxxxxxxxxxxx" class="xxxxxxxxxxxx" scope="request" /&gt;

表达式语言通常翻译成get方法,但你不需要放“get”这个词。像myObj.getId(); 这样的东西是这样写的:#{myObj.id}。就是这样,如果你想在 html 表上写这个,就这样做(我假设是 html 表,因为你说“我必须将该行中的每个列分开才能打印出来”)。

<table>
    <c:forEach var="rowObj" items="${myClass.myArrayList}">
        <tr>
            <td>${rowObj.column1}</td>
            <td>${rowObj.column2}</td>
            <td>${rowObj.column3}</td>
        </tr>
    </c:forEach>
</table>

请注意,答案中最重要的部分是我提供的链接,您应该了解所有这些。您是否已经将数组列表放入请求中?在这里很难判断哪个是真正的问题。

另请参阅: How to avoid Java code in JSP files?

【讨论】:

  • 我不需要导入两个类会使用吗? DatabaseDAO 类和 Row 类。以及如何?
  • 我编辑了答案${myClass.myArrayList},翻译成myClass.getMyArrayList();,所以你的类中应该有这个“get”方法(方法名以get开头很重要)。如果您必须导入类,我不记得正确,我会说不,jsp 被转换为 .java 文件,我相信该过程足够聪明,可以为您执行此操作。试试吧。
  • pastebin.ca/2335079 无法正常工作。控制台也没有错误。这个实际例子有什么线索吗?
  • 我稍后会看到这个,但是通过概述,您的查询似乎是错误的,您的结果集中没有主题。
  • 改变了上面提到的那个alrady。但无论哪种方式,除了我的愚蠢错误还有其他问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多