0

HTMLを生成するコードがありますが、このコンテンツをjspで出力しようとすると、すべての「<」が「」に置き換えられ&lt;、すべての「>」が「」に置き換えられ&gt;ます。結果をレンダリングする部分は次のとおりです。

<c:out value="${data}"/>

キャラクターの置き換えの原因と、それを回避する方法を誰かに説明してもらえますか?

PS:タグのescapeXml ='false'プロパティを試しましたが<c:out/>、何も表示されません。

ありがとう、ナターシャ

4

4 に答える 4

1

生成された HTML に何をさせたいですか? ブラウザーで使用するマークアップにしたいですか、それとも、ユーザーに表示されるサンプル コードなどとして、最終ページに表示したいですか? escapeXml='false' を指定しないと、HTML としてブラウザーに出力され、他のすべてのマークアップと共に解釈されます。escapeXml='true' を使用すると、エンドユーザーに表示されるエスケープされたマークアップに変換されます。したがって、それはすべて、あなたが何をしようとしているかに依存します。

< および > 文字をエンド ユーザーに表示する場合は、< のように表示する必要があります。と > マークアップで。

ニック

于 2009-05-14T15:24:47.927 に答える
1

out タグは本来の動作をします。リテラル値を出力したい場合は、テキストに ${data} で表現された EL を直接挿入できます。つまり、代わりに

Some content <c:out value="${data}"/> some more content

あなたが使うだろう

Some content ${data} some more content 

あなたのJSPで。

c:out に腹を立てる前に、出力はしばしばユーザーがそこに入れたものであり、不要なコードが含まれている可能性があることを考慮してください。(C# バージョンの) c:out :-) の代わりに、StackOverflow で ${data} を使用することを想像してみてください。

于 2009-05-14T16:43:49.157 に答える
0

<c:out value="${data}"/>HTML文字をエスケープしますが、エスケープし${data}ません。この関連する質問を見てください。

于 2009-05-14T16:59:25.080 に答える
0

デフォルトでtrueに設定されているc:outタグにescapeXml属性があり、falseに設定すると、エスケープは行われません。つまり、HTMLはブラウザにそのまま出力されます。

于 2009-05-14T16:35:59.503 に答える