【问题标题】:ArrayList to Table in JSPJSP中的ArrayList到表
【发布时间】:2009-11-13 13:56:55
【问题描述】:

我有一个 ArrayList,我想在表格中显示它

.....

ArrayList rows = ....

.....

    <table cellspacing="1" cellpadding="4" border="3">
        <tr>
            <TH>
                Heading1
            </TH>
            <TH>
                Heading2
            </TH>
            <TH>
                Heading3
            </TH>
            <TH>
                Heading4
            </TH>
            <TH>
                Heading5
            </TH>
            <TH>
                Heading6
            </TH>
            <TH>
                Heading7
            </TH>
        </tr>

        <tr>
            <% for (int i = 0; i < rows.size(); i++) {
                for (int j = 0; j < 7; j++) {
            %>
            <td>
                <center>
                    <% out.println( ?????  ); %>
                </center>
            </td>
            <% } %>
        </tr>
        <% } %>
    </table>

但我无法显示正确的数据。

【问题讨论】:

  • 你的arraylist结构如何?
  • 您是在问应该在 ????部分,还是您在问为什么它不能正确显示?如果是后者,我注意到您的开始 TR 标签需要进入第一个循环。

标签: java jsp arraylist


【解决方案1】:

一方面,我怀疑您的外循环应该从&lt;tr&gt; 标记上方开始。

除此之外,ArrayList 是一维结构(毫不奇怪,因为它是一个列表)。尝试在表格中显示此数据意味着它是二维的,但如果没有泛型,您就无法提供有关列表中包含的内容的信息。

我会这样处理:

    /* header rows */

        <% for (int i = 0; i < rows.size(); i++) { 
           Object rowObj = rows.get(i);
        %>
        <tr>

            <% for (int j = 0; j < 7; j++) {
               // This RHS made up due to not knowing the class of objects
               // in your map, use something equivalent
               Object cell = rowObj.getEntry(j); 
            %>
            <td>
                <center>
                   <%=cell.toString()%>
                </center>
            </td>
            <% } %>
        </tr>
        <% } %>

【讨论】:

    【解决方案2】:

    您不应该为此使用 scriptlet。为此使用 JSTL/EL。不久后,我发布了一个示例,您可以在这里找到:Places where JavaBeans are used?

    【讨论】:

      【解决方案3】:

      这是使用 JSP 标签库的完美场景。 jsptags.com 上有大量可用的 tablibs 列表,这样 HTML 将非常可读,但您将拥有动态表格。

      【讨论】:

        【解决方案4】:

        正如其他人指出的那样,您可能希望使用标签,而不是自己使用 scriptlet 生成表格。好处比我想在这里列出的要多。我建议查看Display tag library。它使从任何集合生成表变得非常容易。

         <display:table name="rows">
            <display:column property="id" title="ID" />
            <display:column property="name" />
            <display:column property="email" />
            <display:column property="status" />
            <display:column property="description" title="Comments"/>
         </display:table>
        

        当然,每一列都会引用您在 ArrayList 中拥有的对象的一个​​属性。

        【讨论】:

          【解决方案5】:

          您可以使用核心 JSTL 库(从 http://jakarta.apache.org/site/downloads/downloads_taglibs.html 下载)。

          将此分发包中的 jstl.jar 和 standard.jar 库包含到您的类路径中。然后将指令&lt;%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt; 放在您的jsp 文件顶部。并使用这样的构造:

          ...  
          <br/>
          <table><br/>
          <c:forEach items="${rows}" var="row"><br/>
          <tr><br/>
          <c:forEach items="${row}" var="column"><br/>
          <td><br/>
          <c:out value="${column}"/><br/>
          </td><br/>
          </c:forEach><br/>
          </tr><br/>
          </c:forEach><br/>
          </table><br/>
          ...
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-05-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-10
            • 2011-05-20
            相关资源
            最近更新 更多