0

わかりましたので、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; ...) として出力されました。

4

0 に答える 0