我正在使用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.')");
有没有办法传递这个例外?
答案 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)");
这样你就不用担心逃避烦恼。