2012-03-14 35 views
0

私はので、私は有効であるために、このようなCDATAセクションでラップする必要があるのJavascriptのブロックを含めるために、(春Rooのから生成された)XHTMLを使用してJSPXファイルを持っている:JSP /サーブレットエンジンはCDATAセクションのタグを無視しますか?

<script> 
<![CDATA[ 
    new dijit.Tooltip(
    { 
     connectId : [ "exampleId" ], 
     label : "<c:out value='${exampleIdTooltip}'/>", 
     position: "above" 
    }); 
]]> 
</script> 

私はトラブルをCDATAがその仕事をしており、<c:out>が実行されていないと思います.Javascriptブロックの中にリテラルテキストとして残してあります。ファイルをXHTMLにしないように変更した場合、CDATAを削除することができ、<c:out>が評価されます。

JSTLタグまたはELをJavascriptのブロック内にXHTMLファイルで埋め込むには、どのような方法が最適ですか?

答えて

1

CDATAを使用する代わりに、評価されるべきでない場合は、&、、10をスクリプトブロック内で手動でエスケープします。 JSTL/ELの結果もエスケープすることを忘れないでください。

+0

私は< c:out >を持っていると仮定していますが、これは評価される必要があります。これはサーブレットエンジンによって評価されません。 –

+0

正解ですが、 'if(numb <10)'(javascript)のように評価するべきではないので、スクリプト本体全体がCDATAであると言うのではなく、 'numb < 10'を使用します。しかし、 'c:out'出力はjavascript *と* htmlのためにエスケープする必要があることを覚えておいてください!あなたは、おそらく 'c:out'を直接使用するのではなく、あなたのサーブレットのものを単一のjson構造体に入れ、スクリプト内で参照するほうがよいでしょう。 –

+0

もう1つの方法は、単に ']]><![CDATA [' c:out'タグを評価する必要がある場合はどこでもを挿入することです。これにより、前のCDATAが終了し、その後すぐに新しいCDATAが開始されます。 – jpaugh

関連する問題