我正在维护Cocoon 2.1应用程序,我遇到了严重的请求参数问题。
请考虑以下网址:
http://myapp.com/somePage.html?param1=<expected_integer_value>¶m2=<expected_integer_value>
param1和param2都直接作为参数(<map:parameter />
)传递给变换器,然后使用属性值模板直接在javascript代码中使用:
`<select ... onchange="someFunction(this, '{$param1}','{$param2}');" >`
问题是可以在参数中注入一些JavaScript代码,默认情况下它们不会被转义(尽管如此,所有关于cocoon和xslt的文章都说默认情况下输出 转义)。
也许对cocoon和xsl更有经验的人可能对这个问题有所了解?我怎样才能逃脱茧的输出?我将不胜感激任何帮助和指导。
提前致谢
西蒙
答案 0 :(得分:3)
我设法找到了解决这个问题的方法。在站点地图文件中,必须使用url-encode
函数转义必须直接从url传递到xslt文件的每个参数。
实施例
<map:parameter name="param1" value="{url-encode:{request-param:theNameOfTheParam}}" />'
此致 西蒙
答案 1 :(得分:0)
因为茧解码了婴儿车我建议你做一个简单的翻译,以避免非转义参数的问题:
<select ... onchange="someFunction(this, '{translate($param1,"'", "")}','{translate($param1,"'", "")}');" >
请参阅http://www.zvon.org/xxl/XSLTreference/Output/function_translate.html