Обработка исключений Ajax в JSF 2.0 - PullRequest
0 голосов
/ 20 марта 2012

Я написал следующий код в нашем файле xhtml, для перенаправления на страницу ошибок для вызовов ajax, я написал его на общей странице.

var onError = function onError() {
window.location = 'http://' + jQuery(location).attr('host')+'/saec/app/error';//saec/app/error };jsf.ajax.addOnError(onError);

Работает нормально, но в браузереполучаю ошибку как "Jsf undefined".

Я пробовал, включая

h:outputScript name="jsf.js" library="javax.faces" target="head" 

, но она выдает ту же ошибку.

Может кто-нибудь Пожалуйста скажитеменя, где я сделал ошибку

1 Ответ

2 голосов
/ 20 марта 2012

но в браузере я получаю сообщение об ошибке "Jsf undefined".

Вы уверены, что это не опечатка с вашей стороны? Это jsf в нижнем регистре, а не Jsf.

В любом случае вы получите эту ошибку всякий раз, когда пытаетесь сослаться на объект jsf до того, как будет объявлен в контексте JavaScript. Например, когда сгенерированный вывод HTML (как вы можете видеть по Просмотр источника в веб-браузере) выглядит следующим образом:

<script>jsf.ajax.addOnError(functionName);</script>
<script src="/contextname/javax.faces.resource/jsf.js.xhtml?ln=javax.faces"></script>

Вы должны убедиться, что вы ссылаетесь на него после того, как было объявлено:

<script src="/contextname/javax.faces.resource/jsf.js.xhtml?ln=javax.faces"></script>
<script>jsf.ajax.addOnError(functionName);</script>

Кроме того, вам необходимо учитывать тот факт, что JSF будет автоматически включать его только тогда, когда есть тег <f:ajax> в другом месте в представлении. Вы можете добавить дополнительную проверку, если это так или нет:

if (typeof jsf !== 'undefined') {
    jsf.ajax.addOnError(functionName);
}

В противном случае вам нужно добавить следующую строку, чтобы быть абсолютно уверенным, что JSF будет автоматически включать скрипт ajax при каждом запросе, даже если представление не содержит <f:ajax>.

<h:outputScript library="javax.faces" name="jsf.js" target="head" />

Не связано с конкретной проблемой, если вы хотите использовать стандартные механизмы <error-page> в web.xml также для запросов AJAX, тогда рассмотрите возможность использования этого FullAjaxExceptionHandler вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...