.jsp动态table创作

.jsp dynamic table creation

我正在尝试在 .jsp 中创建动态 table。我一直在尝试通过以下方式通过 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();
%>

虽然上述方法可以而且确实有效,但不推荐使用,而且可能不是完成此任务的最佳方法。

关于我的观点和问题 - 是否有更好的方法来创建此类动态内容?

您可以使用 "out" 打印到响应。你为什么做第一行?你从哪里得到的?

您只需执行以下操作:

<%
out.println("<table>");

while (records in request object){
    out.println("<tr>" + request.getAttribute().toString() + "</tr>");
}

out.println("</table>");
%>

不用scriptlet也可以做到:

<%@ 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>

您需要在 class 路径上包含 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 名称 space:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

互联网上有大量这样的例子。只要看看 Spring MVC 和 JSTL 以及 Table。你会发现很多结果。