1

ある友人から、開発中のポートレットを見てほしいと頼まれました。彼が抱えている問題は、次のような値を入力すると

1 < 2 > 3

彼が取得する入力フィールドで

1 < 2 > 3

マップされた文字列フィールドで。

彼のコードのかなりの部分は疑わしいですが、.replace関数/設定defaultHtmlEscapeをtrueに設定している彼のインスタンスを見つけることができませんでした.

私は彼のポートレットをデバッグしましたが、コントローラーに入る前にすでに変更されています。Springs のディスパッチャー ポートレットにブレークポイントを設定しましたが、processAction では既に変換されています。

>&lt; が先行している場合にのみ解析される<ため、html タグとして処理されるため、エスケープの問題である可能性が高いですが、それに影響を与えるコードは見つかりませんでした。

Spring 2.5.6 にはあまり詳しくありませんが (バージョン 3 を使用しています)、同様の問題を思い出せません。これは websphere portal 6.1 の問題かもしれませんが、同様の問題が見つからないので驚きです。(明日も同様のシナリオを作成してみます)。

任意の入力をいただければ幸いです。

(Spring 2.5.6-SEC02、WebSphere Portal 6.1、最新の機能パックなし)

4

1 に答える 1

1

&, >, <XML のエスケープとは、 などの特殊文字を などの文字エンティティ コードに変換することを指します&amp;, &gt;, &lt;,。ポートレットが、XML エスケープされていないポートレット タグ ライブラリによって生成された URL に依存している場合は、このコンテナー ランタイム オプションを false に設定します。ポートレット 2.0 仕様では、ポートレット タグ ライブラリによって生成されるすべての URL は、デフォルトで XML エスケープされます。

あなたの友人は、彼のポートレット JSP に次のようなエスケープ機能を持っている必要があります。

 <portlet:resourceURL var="inputURL" id="userValues" escapeXml="false" />
于 2011-03-02T05:56:34.087 に答える