Ajax.oncomplete错误地转义单引号

时间:2015-10-01 21:37:30

标签: ajax jsf omnifaces

我正在使用Omnifaces ajax.oncomplete函数在我的JSF 2页面中显示一个toastr消息。我面临的问题是我正在开发一个frensh Web应用程序,我们使用了很多引号(')。当我添加引号时,浏览器会抛出格式错误的XML异常:

malformedXML: missing ) after argument list

虽然我使用braqueted斜杠使其忽略引号并将其视为字符串:

Ajax.oncomplete("toastr.warning('Vérifier l\'adresse e-mail saisie.')");

有没有办法传递这个例外?

1 个答案:

答案 0 :(得分:1)

\也是Java本身的转义字符。因此,最终\被Java剥夺了。

您需要对其进行双重转义以表示文字\,因此它在JavaScript中作为真实的\到达。

Ajax.oncomplete("toastr.warning('Vérifier l\\'adresse e-mail saisie.')");

或者,如果这些字符串不是硬编码的,因此来自动态源,并且您基本上需要执行自动转义,那么最好使用Ajax#data()自动让OmniFaces将Java变量编码为在JavaScript上下文中通过OmniFaces.Ajax.data提供格式正确的JSON对象。

Ajax.data("message", "Vérifier l'adresse e-mail saisie.");
Ajax.oncomplete("toastr.warning(OmniFaces.Ajax.data.message)");

这样你就不用担心逃避烦恼。