2

私は Cocoon 2.1 アプリケーションを保守していますが、リクエスト パラメータで深刻な問題に直面しました。

次の URL を検討してください。

http://myapp.com/somePage.html?param1=<expected_integer_value>&param2=<expected_integer_value>

param1 と param2 の両方が、パラメーター ( ) としてトランスフォーマーに直接渡され<map:parameter />、属性値テンプレートを使用して JavaScript コードで直接使用されます。

`<select ... onchange="someFunction(this, '{$param1}','{$param2}');" >`

問題は、いくつかの JavaScript コードをパラメーターに挿入することが可能であり、デフォルトではエスケープされないことです (ただし、cocoon と xslt に関するすべての記事では、デフォルトで出力がエスケープされると述べられています)。

おそらく、cocoon と xsl の経験が豊富な人なら、この問題について何か知っているのではないでしょうか? cocoonで出力をエスケープするにはどうすればよいですか? ヘルプとガイダンスに感謝します。

前もって感謝します

サイモン

4

2 に答える 2

3

この問題の解決策を見つけることができました。サイトマップ ファイルでは、url から xslt ファイルに直接渡す必要がある各パラメーターは、url-encode関数を使用してエスケープする必要があります。例

<map:parameter name="param1" value="{url-encode:{request-param:theNameOfTheParam}}" />'

よろしくサイモン

于 2009-08-17T07:04:06.723 に答える
0

cocoonは乳母車をデコードするので、エスケープされていないパラメーターの問題を回避するために、単純な変換を行うことをお勧めします。

<select ... onchange="someFunction(this, '{translate($param1,"'", "")}','{translate($param1,"'", "")}');" >

http://www.zvon.org/xxl/XSLTreference/Output/function_translate.htmlを参照してください

于 2009-08-16T21:07:01.523 に答える