2

我正在维护 Cocoon 2.1 应用程序,但我遇到了请求参数的严重问题。

考虑以下网址:

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 更有经验的人可能对这个问题有所了解?我怎样才能逃脱茧中的输出?我将不胜感激任何帮助和指导。

提前致谢

西蒙

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 回答