有一个包含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>");
}
}
答案 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
标记
<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>