我正在尝试在.jsp
中创建一个动态表。我一直试图通过以下方式通过scriptlet来做到这一点( 这是伪代码 ):
<%
PrintWriter writer = response.getWriter();
writer.println("<table>");
while(records in request object){
writer.println("<tr>" + request.getAttribute().toString() + "</tr>");
}
writer.println("</table");
writer.close();
%>
虽然上述方法可以并且确实可行,但不鼓励这样做,并且可能不是完成此任务的最佳方法。
我的问题是-是否有更好的方法来创建这种动态内容?
答案 0 :(得分:2)
可以不用脚本来完成:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${not empty request.records}">
<table>
<c:forEach items="${request.records}" var="record">
<tr><td> ${record} </td></tr>
</c:forEach>
</table>
</c:if>
答案 1 :(得分:1)
您需要在类路径上包括JSTL依赖关系,并在Spring中对其进行配置。
如果您已经在Spring中对其进行了配置,则可以通过以下方式动态创建tds:
<table>
<thead>
<tr>
<th>Item1</th>
<th>Item2</th>
<th>Item3</th>
</tr>
</thead>
<tbody>
<c: forEach items="${menus}" var="menu" varStatus="status">
<tr>
<td>${menu.item1}</td>
<td>${menu.item2}</td>
<td>${menu.item3}</td>
</tr>
</c: forEach>
</tbody>
</table >
此${menus}
是来自后端的列表。它是POJO的列表,包含3个字段item1,item2和item3。
您还需要在.jsp文件中包含c名称空间:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
互联网上有大量此类示例。只要看一下Spring MVC和JSTL以及Table。您会发现很多结果。
答案 2 :(得分:0)
您可以使用“ out”打印到响应。你为什么要做第一行?你从哪里得到的?
您可以执行以下操作:
<%
out.println("<table>");
while (records in request object){
out.println("<tr>" + request.getAttribute().toString() + "</tr>");
}
out.println("</table>");
%>