好的,所以我正在尝试制作一个 JSP 标记(通过标记文件)。它让您创建带有“添加”按钮的表,该按钮可让您在客户端添加行。所以基本上你将行的 HTML 传递给这个标签,它会创建一个包含该行的表,并输出 JS 以将所述行动态插入到表中。而且您还传递了一个简单地成为表格标题的行。
<%@ tag language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/functions' prefix='fn' %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/xml' prefix='x' %>
<%@ attribute name = "id" required = "true"%>
<jsp:doBody var = "thebody"/>
<x:parse doc='${"<root>"}${thebody}${"</root>"}' var = "xmlBody"/>
<table id = "${id}" class = "datatable">
<tbody>
<tr>
<x:forEach select="$xmlBody/root/th/*" var="data">
<td><x:out select="$data"/></td>
</x:forEach>
</tr>
<tr>
<x:forEach select="$xmlBody/root/tr/*" var="data">
<td><x:out select="$data"/></td>
</x:forEach>
</tr>
<c:out value="${heading}"/>
</tbody>
</table>
<button id="addRowButton" class="BUTTON btndarkblue " title="Add" onclick="addRowTo${id}()"> Add </button>
<script>
function addRowTo${id}()
{
$('#${id} tr:last').after('<tr><x:forEach select="$xmlBody/root/tr/*" var="data"><td><x:out select="$data"/></td></x:forEach></tr>');
}
</script>
现在,当标签包含简单文本时,这可以完美地工作。但是当我传递一些html(直接或通过其他自定义jsp标签)时,它只输出这些标签的文本,而不是标签本身。例如:
<button onclick = "doSomething()">Click here</button>
变成
Click Here
我相信它正在做的是,当应用于非叶节点时,标签仅输出该链下叶节点处的数据......
那么有人有解决方法吗?如何使其按原样输出节点?
PS:我也尝试了 c:out,但是将 html 输出为 TEXT ( $lt;tr $gt; ...)