我在JSF中使用window.open(url,"selectWindow","status=no,width=610,height=480,scrollbars=no")
。
网址看起来像这样:
/abcxyz.jsf?param1=value1&param2=value2
会在弹出窗口中显示如下:
/abcxyz.jsf?param1=value1¶m2=value2
问题是,value2
是一个字符串,其中包含&
。说,value2 = ab&12
。如何确保value2
被视为ab&12
,并且由于ab
符号,&
之后它不会中断?
答案 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()}
。