我通过request.setAttribute
从servlet向jsp页面发送html字符串,但是当我尝试在jsp
上获取它时,它在视图中无法正确显示。
的servlet:
String sampleHtml = ""
+ "<table class=\"table table-bordered\">"
+ "<thead>"
+ "<tr>"
+ "<td>Data</td>"
+ "<td>More Data</td>"
+ "</tr>"
+ "</thead>"
+ "<tbody>"
+ "<tr>"
+ "<td>Macdonal</td>"
+ "<td>David</td>"
+ "</tr>"
+ "</tbody>"
+ "</table>";
}
request.setAttribute("userRoles", sampleHtml);
JSP:
<p>
<label>Set Roles</label>
<span class="field">
<%=request.getAttribute("userRoles") %>
</span>
</p>
答案 0 :(得分:1)
span是内联元素。它不能包含块元素。因此,您无法向其添加表格。考虑将span改为div。
HTML元素是用于表示内容的通用内联容器,它本身并不代表任何内容。
请不要在servlet中编写HTML。使用JSTL或JS。
答案 1 :(得分:0)
从cotroller发送HTML代码不是一个好习惯。准备控制器中的数据并将其发送到您的视图,例如:
request.setAttribute("userRoles", roles);
然后在jsp绘制表中使用html和jstl foreach:
<table>
<thead>
<tr>
<td>Data</td>
<td>More Data</td>
</tr>
</thead>
<tbody>
<c:forEach items="userRoles" var="role">
<tr>
<td><c:out value="${role.data}"/></td>
<td><c:out value="${role.moreData}"/></td>
</td>
</c:foreach>
</tbody>
</table>
别忘了加入你的jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
并添加到您的pom.xml:
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
这是更灵活的方式,因为您的处理逻辑和视图准备是分离的,您可以替换表到列表(例如),添加样式而无需任何控制器逻辑更改
答案 2 :(得分:0)
将其放在div
标记
<div class="field">
<%=request.getAttribute("userRoles") %>
</div>