Я пытаюсь предоставить отзыв о запросе 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.
Теперь часть, которую я не понимаю, - это как использовать аспекты ошибок и успеха.Завершенное событие всегда следует сразу за событиями успеха и ошибки.Посредством отладки я проверил, что события успеха и ошибки фактически вызваны, и их аспекты также становятся видимыми.Но время между событиями успеха / ошибки и последующим завершенным событием настолько мало, что вы даже не можете воспринимать появление событий успеха и ошибок даже как мерцание экрана.
Теперь мои вопросы:
- Есть ли что-то, что я концептуально не понял о том, как использовать фасеты ошибки и успеха?
- Есть ли способ предотвратить полный фасет, чтобы немедленно заменить фасеты ошибки и успеха?Пропуск полного фасета не имеет никакого эффекта.После завершения ajax-запросов фасет вообще не отображается.
- Какой смысл иметь фасеты успеха и ошибки, когда они фактически никогда не видны?
РЕДАКТИРОВАТЬ: Тем временем проблема была решена.Это была ошибка в 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 за то, что он побудил меня опубликовать проблему на багтрекере с простыми лицами.