2015-10-01 7 views
0

Я использую функцию Omnifaces ajax.oncomplete, чтобы показать сообщение toastr на моей странице JSF 2. Проблема, с которой я сталкиваюсь, заключается в том, что я разрабатываю веб-приложение frensh, и мы используем много кавычек ('). Когда я добавить цитату, браузер бросает искаженного исключение XML:Ajax.oncomplete не удалось выполнить однократное отклонение

malformedXML: missing) after argument list 

В то время как я использую braqueted слэш, чтобы сделать его игнорировать цитаты и рассматривать его как строку:

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

Is есть способ преодолеть это исключение?

ответ

1

\ также является символом escape в самой Java. Итак, в конечном итоге \ был отключен Java.

Вам необходимо удвоить его, чтобы представлять собой литерал \, поэтому он становится реальным \ в JavaScript.

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

В качестве альтернативы, если эти строки не жёстко и, таким образом, исходя из динамического источника, и вы в основном, таким образом, необходимо выполнить автоматическое экранирование, то лучше использовать Ajax#data() автоматически позволить OmniFaces кодировать переменную Java, как правильно отформатированный JSON-объект, доступный через OmniFaces.Ajax.data в контексте JavaScript.

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

Таким образом, вам не нужно беспокоиться о побеге.

+0

Спасибо, что всегда –