好的,所以我想创建一个JSP标记(通过tagfile)。它允许您创建带有“添加”按钮的表,允许您在客户端添加行。因此,基本上您将行的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标签)时,它只输出那些标签的TEXT,而不是标签本身。例如:
<button onclick = "doSomething()">Click here</button>
变为
Click Here
我相信它正在做的是,当应用于非叶节点时,标签仅输出该链下叶节点的数据......
所有人都有解决方法吗?如何使它按原样输出节点?
PS:我也试过c:out,但输出的html为TEXT($ lt; tr $ gt; ...)