0

Javaでツリー構造を生成してhtmlに表示しようとしています。Java で純粋な html を生成することで機能させることができますが、保守性のためにタグ内のツリー コンポーネント (ルート、ブランチ、リーフ) の html を保持することをお勧めします。カスタム タグ (またはそのタグ) を含む Java 文字列を HTML に変換する良い方法はありますか?

私はいくつかのことを試しました:

-コントローラーで文字列を構築し、それをjspで出力します(スクリプトレットまたはELを介して)文字列は翻訳されませんが、そのまま出力されます。つまり、ブラウザに表示されます

-コントローラーで構造を構築し、それを文字列を生成するカスタムタグに渡します(さらにカスタムタグ)上記と同じ問題。本体を再変換できませんでした。BodyTagSupport と SimpleTagSupport の両方を試しました

-コアタグを使用する 構造が複雑すぎるため、これはオプションではありません

-スクリプトレットはタグでうまく機能しません

何か案は?

4

1 に答える 1

1

私の理解が正しければ、タグは別のカスタム タグ インスタンスを含む HTML コードを生成します。実際には、HTML ではなく JSP コードを生成します。それは許可されていません。JSP コンテナは、タグが生成するコードを再解析および解釈しません。

しかし、タグ メソッド (タグ ファイルとして実装されている場合は JSP タグ) を自分で呼び出して、再帰を実装できない理由はありません。以下は、JSP タグ ファイル (tree.tag、ノードのコレクションをパラメーターとして受け取る) を使用した簡単な例です。

<%@ tag %>
<%@ attribute name="nodes" required="true" rtexprvalue="true" type="java.util.collection" %>
<ul>
    <c:forEach var="node" items="${nodes}">
        <li><c:out value="${node.text}"/>
            <c:if test="${!empty node.subNodes}">
                <myTags:tree nodes="${node.subNodes}">
            </c:if>
        </li>
    </c:forEach>
<ul>
于 2013-01-28T20:04:55.420 に答える