如何从RequestContext中的Callbackparameters中转义特殊字符?

时间:2014-12-01 10:45:11

标签: javascript jsf primefaces

我想转义追加在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。

1 个答案:

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