在Jsp中打印字符串数组的最有效方法是什么?

时间:2016-03-11 11:58:56

标签: java arrays jsp servlets arraylist

有一个包含String数组的ArrayList。每个字符串数组都包含每行的值。我想在JSP中打印它。我尝试直接从servlet打印它,它的工作原理很慢,因为有很多数据。如何在JSP EL中这样做?

public void printTableData(List<String[]> dataTable, PrintWriter out) {
        System.out.println(dataTable);
        out.println("<table border='1'>");
        out.println("<tr>");
        for (int j = 0; j < dataTable.get(0).length; j++) {
            out.println("<th>" + dataTable.get(0)[j] + "</th>");
        }
        out.println("</tr>");
        if (dataTable.size() > 1)
            for (int i = 1; i < dataTable.size(); i++) {
                out.println("<tr>");
                for (int j = 1; j < dataTable.get(i).length; j++) {
                    out.println("<td>" + dataTable.get(i)[j] + "</td>");

                }
                out.println("</tr>");
            }
        out.println("</table>");
    }

}

4 个答案:

答案 0 :(得分:0)

也许如果您使用StringBuilder来连接字符串将改善您的表现。

public void printTableData(List<String[]> dataTable, PrintWriter out) {
    System.out.println(dataTable);
    StringBuilder sb = new StringBuilder();
    sb.append("<table border='1'>\n");
    sb.append("<tr>\n");
    for (int j = 0; j < dataTable.get(0).length; j++) {
        sb.append("<th>");
        sb.append(dataTable.get(0)[j]);
        sb.append("</th>\n");
    }
    sb.append("</tr>\n");
    if (dataTable.size() > 1)
        for (int i = 1; i < dataTable.size(); i++) {
            sb.append("<tr>\n");
            for (int j = 1; j < dataTable.get(i).length; j++) {
                sb.append("<td>");
                sb.append(dataTable.get(i)[j]);
                sb.append("</td>\n");

            }
            sb.append("</tr>\n");
        }
    sb.append("</table>\n");
    out.println(sb.toString());
    }

}

答案 1 :(得分:0)

首先将数据传递给您的请求。 在:

之后创建一个表头
<table class="your_class">
    <thead>
        <tr>
            <th>Title</th>
            <th>More</th>
            <th>Other</th>
        </tr>
    </thead>

然后使用<for:each>迭代元素:

    <tbody>
        <c:forEach items="${list}" var="data">
            <tr class="your_class">
                <td>${data.attribute1}</td>
                <td>${data.attribute2}</td>
                <td>${data.attribute3}</td>
            </tr>
        </c:forEach>
    </tbody>
</table>

答案 2 :(得分:0)

问题是如何在JSP中进行迭代...所以......

  • 首先,您需要将列表添加到请求属性中:

    request.setAttribute("list", dataTable)
    
  • 然后您可以使用c:forEach标记

    在jsp中进行迭代
    <c:forEach items="${list}" var="entry">
        <!-- iterate here using ${entry} -->
    </c:forEach>
    

如果您正在使用JSP 2.0

,也可以使用varStatus="loop"

答案 3 :(得分:0)

我和Bazz一起回答。以下代码应该可以正常工作。您需要在请求属性中添加listName模型。

<c:forEach var="listVar" items="${listName}">
<option value ="10"><c:out value="${listVar.attribute}"/></option>