JSF 2: ошибки Ajax не отображаются - PullRequest
9 голосов
/ 24 декабря 2010

В настоящее время я опробую функцию AJAX, и мне интересно, как я могу отобразить сообщения об ошибках, возникающих при выполнении AJAX?Например, у меня есть кнопка простых лиц:

<p:commandButton value="Refresh" update="debugPanel messages" 
   action="#{checkbocLabBean.submit}"/>

При тестировании этой кнопки, похоже, ничего не происходит, пока я не проверю логи сервера, есть исключение.Оказывается, у меня есть опечатка.Должно быть # {checkboxLabBean.submit}.

Единственное, о чем я могу думать сейчас, это отключить ajax, добавив ajax = "false" в моем случае, и ошибка покажет.*

Существуют ли другие способы отображения ошибок прямо в браузере на этапе разработки при использовании ajax-запросов?

1 Ответ

6 голосов
/ 24 декабря 2010

Ajax-запросы происходят асинхронно. Они по умолчанию не влияют на весь документ. Исключения, выдаваемые во время запросов ajax PrimeFaces, делегируются в <p:ajaxStatus>. Вы можете сделать свое дело в <facet name="error">.

<p:ajaxStatus>
    <f:facet name="start">Loading...</f:facet>
    <f:facet name="success"><h:outputText value="" /></f:facet>
    <f:facet name="error">An error has occurred!</f:facet>
</p:ajaxStatus>

Если вы предпочитаете заменить текущий документ страницей с ошибкой - что является очень разумным выбором - тогда полезно знать, что PrimeFaces использует jQuery под обложками и что вы можете настроить jQuery следующим образом:

<script>
    jQuery.ajaxSetup({
        error: handleXhrError
    });

    function handleXhrError(xhr) {
        document.open();
        document.write(xhr.responseText);
        document.close();
    }
</script>

Смотри также:

...