如何逃避/避免JSF网址中的&符号(&)

时间:2013-03-26 11:22:12

标签: jsf url special-characters html-escape-characters

我在JSF中使用window.open(url,"selectWindow","status=no,width=610,height=480,scrollbars=no")。 网址看起来像这样:

/abcxyz.jsf?param1=value1&param2=value2 

会在弹出窗口中显示如下:

/abcxyz.jsf?param1=value1&param2=value2

问题是,value2是一个字符串,其中包含&。说,value2 = ab&12。如何确保value2被视为ab&12,并且由于ab符号,&之后它不会中断?

1 个答案:

答案 0 :(得分:3)

你需要URL-encode它。在普通的Java中,那将是

String encodedValue2 = URLEncoder.encode(value2, "UTF-8");

&应该成为%26。字符集应与服务器配置为用于解码传入的HTTP请求URI(通常默认为ISO-8859-1)相同。

JSF <f:param><h:outputLink><h:link>中使用时也会这样做,但它们对window.open()生成网址没有帮助,所以你真的需要在URLEncoder的帮助下在支持bean中执行此操作或创建custom EL function。如果您碰巧使用JSF实用程序库OmniFaces,则可以使用#{of:encodeURL()}

另见: