我想转义追加在RequestContext回调参数中的特殊字符。
http://forum.primefaces.org/viewtopic.php?f=3&t=40444
中明确提到了这个问题例如: 单击下面的按钮,会调用doSomething。
<p:commandButton value="Save Event" style="float:right;margin-right:100px;"
actionListener="#{myBean.doSOmething}"
oncomplete="if (args.facesMessagesAvailable){handleEditEventRequest(args);}
</p:commandButton>
在服务器方法中,参数通过Request上下文传递给客户端。
public void doSOmething() {
String schEventsJson = "Hello & How are you?";
RequestContext.getCurrentInstance().addCallbackParam("eventList", schEventsJson);
}
浏览器控制台显示 未捕获的TypeError:无法读取属性&#39; facesMessagesAvailable&#39;未定义的
我认为这是因为在回调参数中使用&符号。 结果,回调参数在客户端不可用。
我尝试在encodeURIComponent中包含args,这是没用的。
使用Hatem Aliman建议的解决方案以及JSON, replace quotes and slashes, but by what?中提供的解决方案 但问题仍然存在。
想知道如何解决同样的问题。 任何帮助表示赞赏。
使用jsf 2.1和primefaces 4.0。
答案 0 :(得分:1)
您可以使用escapeEcmaScript()
使用EcmaScript字符串规则转义字符串中的字符。
EcmaScript
以JavaScript和ActionScript方言而闻名。
示例:
String schEventsJson = StringEscapeUtils.escapeEcmaScript("Hello & How are you?");
你可以在apache的公共场所找到它
org.apache.commons.lang3.StringEscapeUtils
的Maven:
<!-- apache commons -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>