Как я могу использовать аспекты ошибки и успеха в p: ajaxStatus - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь предоставить отзыв о запросе ajax своим пользователям на странице JSF.Я определил компонент опроса Primefaces, который периодически отправляет запросы на сервер и.Пока все работает нормально.Я хочу, чтобы пользователи знали о текущем состоянии с помощью простого компонента ajaxStatus.Я определил это следующим образом:

<p:ajaxStatus>
  <f:facet name="default"><h:outputText value="default"/></f:facet>
  <f:facet name="start"><h:outputText value="start"/></f:facet>
  <f:facet name="success"><h:outputText value="success"/></f:facet>
  <f:facet name="error"><h:outputText value="error"/></f:facet>
  <f:facet name="complete"><h:outputText value="complete"/></f:facet>
</p:ajaxStatus>

Проблема, с которой я сталкиваюсь, заключается в том, что аспекты успеха и ошибок никогда не видны или, точнее, никогда не видны в течение времени, достаточного для их фактического восприятия.

Теперь я проверил, что определенные мной фасеты переведены в div с правильно сгенерированными идентификаторами, состоящими из префикса плюс имя соответствующего фасета.Я отладил соответствующий простой javascript и обнаружил, что он просто применяет «display: none;»как встроенный стиль для всех фасетов, а затем снова удаляет стиль из фасета, который представляет текущее состояние каждый раз, когда происходит событие ajax.

Теперь часть, которую я не понимаю, - это как использовать аспекты ошибок и успеха.Завершенное событие всегда следует сразу за событиями успеха и ошибки.Посредством отладки я проверил, что события успеха и ошибки фактически вызваны, и их аспекты также становятся видимыми.Но время между событиями успеха / ошибки и последующим завершенным событием настолько мало, что вы даже не можете воспринимать появление событий успеха и ошибок даже как мерцание экрана.

Теперь мои вопросы:

  1. Есть ли что-то, что я концептуально не понял о том, как использовать фасеты ошибки и успеха?
  2. Есть ли способ предотвратить полный фасет, чтобы немедленно заменить фасеты ошибки и успеха?Пропуск полного фасета не имеет никакого эффекта.После завершения ajax-запросов фасет вообще не отображается.
  3. Какой смысл иметь фасеты успеха и ошибки, когда они фактически никогда не видны?

РЕДАКТИРОВАТЬ: Тем временем проблема была решена.Это была ошибка в Primefaces и будет исправлена ​​в версии 6.3.Вот соответствующий отчет об ошибке, который я создал: https://github.com/primefaces/primefaces/issues/3625. Я также предоставил запрос на извлечение, который разрешил проблему: https://github.com/primefaces/primefaces/pull/3653. Для всех, кто интересуется обходным решением, вы можете самостоятельно построить основные выражения и применить к нему следующее изменение: https://github.com/primefaces/primefaces/commit/33fa3e55239b5bd974fa88b0f5ce29d02a5c3557. Это решит проблему.

Спасибо @kukeltje за то, что он побудил меня опубликовать проблему на багтрекере с простыми лицами.

1 Ответ

0 голосов
/ 26 апреля 2018
  1. номер

  2. Источник компонента находится в https://github.com/primefaces/primefaces/blob/master/src/main/resources/META-INF/resources/primefaces/ajaxstatus/ajaxstatus.js. Вы можете переопределить функции bind или trigger, чтобы задержать скрытие аспекта ошибки, когда это происходит. Вы могли бы даже сделать это так, чтобы его нужно было активно закрывать .. Но ... (см. Ниже)

  3. Нет ни одного.

... Я никогда не использовал декларативный способ для ошибок. Я всегда просто использовал старт ... Так что никогда не замечал такого поведения. Но опять же, ошибка составляет только для ошибок в технической обработке запроса javascript. Не для обработки ошибок с сервера в результате вызова javascript ajax. Подумайте, например, когда интернет-соединение отсутствует, вы не можете сделать ajax-вызов. Те виды ошибок.

Обходной путь должен был бы использовать

<p:ajaxStatus onstart="alert('Start')" oncomplete="alert('End') onerror="alert('Error')"/>

В них у вас есть доступ к this, который содержит информацию об ошибке, если я прав.

Но, возможно, стоило бы хотя бы опубликовать в списке проблем вопрос о довольно бесполезности аспектов успеха и ошибок.

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