2017-06-23 68 views
-1

Struts2タグのテキストからUTF-8への自動エンコーディングに問題があります。Struts2タグのHTMLタグ

アクションクラスからJSPページにHTMLタグを渡したいと思いますが、strutsタグではこの値は自動的にUTF-8にエンコードされ、HTMLタグは正しく表示されません。例えば

: 私はアクションクラスでparam

String param=param[0] + "& <br>" + param[1]; 

という名前の文字列変数を持っており、このparamはJSPページに渡すとStrutsタグを使用して、ページに表示されます。

<s:property value="%{param}"> 

私の問題それは、JSPページでは、<br>タグが自動的にエンコードされ、テスト"& <br>"のように不快であり、代わりにHTMLタグのように使用され、に続いて"&"と表示されます改行を入力します。

この自動エンコード処理をどのようにスキップすることができますか?

答えて

1

documented)属性escapeHtmlを試しましたか?

<s:property value="%{param}" escapeHtml="false" /> 

PS:二つの追加の注意事項:

  1. あなたがHTMLの特殊文字である&を、使用しています。あなたは、文字列をエスケープしない場合は、あなたshould write it as &amp;

  2. ローワンCが適切に彼の答えで指摘するように、WebページにエスケープされていないHTMLを使用して(あなたのケースでparam配列)、特に文字列の場合は、危険なことができます動的であり、クライアントによって設定することができます。あなたがそれを信用できない、または適切に浄化できないなら、それをしないでください。真剣に。

1

s:property tagは、デフォルトでXSSセキュリティ違反を防ぐためにhtmlコードをエスケープします。あなたはこのタグで表示するコンテンツを信頼する場合、あなたは、このプロセスを無効にするにはescape attribtesのいずれかを使用することができます:あなたは

<s:property value="%{param}" escapeHtml="false"/> 
を使用することができ、あなたのコードでは

Name    Required Default Evaluated Type Description 
escapeCsv   false  false false  Boolean Whether to escape CSV (useful to escape a value for a column) 
escapeHtml   false  true false  Boolean Whether to escape HTML 
escapeJavaScript false  false false  Boolean Whether to escape Javascript 
escapeXml   false  false false  Boolean Whether to escape XML