JSF 2 – очистка атрибутов компонента при загрузке страницы?
-
20-09-2019 - |
Вопрос
Настоящий вопрос: Есть ли способ очистить определенные атрибуты для всех компонентов при начальной загрузке страницы?
Справочная информация:
В моем приложении есть внешний слой JSF 2.0, который взаимодействует с уровнем обслуживания (уровень обслуживания состоит из bean-компонентов Spring, которые внедряются в управляемые bean-компоненты).
Уровень сервиса выполняет свою собственную проверку, и я провожу ту же проверку на уровне внешнего интерфейса, используя свои собственные классы валидаторов, чтобы попытаться каким-то образом избежать дублирования кода.Эти классы валидаторов не являются валидаторами JSF, это просто POJO.
Я выполняю проверку только действия, поэтому в методе действия я выполняю проверку, и только если она действительна, я вызываю уровень обслуживания.
Когда я выполняю проверку, я устанавливаю styleClass и заголовок для UIComponents, используя отражение (поэтому, если UIComponent имеет методы setStyleClass(:String) или setTitle(:String), я использую их).
Это прекрасно работает, и при ошибке проверки я вижу красиво оформленное текстовое поле со всплывающим окном, содержащим сообщение об ошибке, если навести на него курсор.Однако, поскольку компонент привязан к управляемому компоненту с областью действия сеанса, кажется, что эти атрибуты сохраняются.Поэтому, если я уйду и вернусь на ту же страницу, styleClass и заголовок все еще будут в состоянии ошибки.
Есть ли способ очистить атрибуты styleClass и title при каждой начальной загрузке страницы?
Спасибо,
Джеймс
P.S.Я использую метод действия для проверки из-за некоторых проблем, которые у меня были раньше с JSF 1.2 и его методами проверки, но не могу вспомнить, почему...вот почему я использую метод действия для проверки.
Решение
Хорошо, мне нужно использовать PhaseListener, см. эта запись в блоге BalusC и эта другая запись в блоге, это гораздо лучший способ сделать то, что я уже делаю - установить styleClass вручную с помощью отражения - которое получает все компоненты с сообщениями и выделяет их...Я собираюсь сделать то же самое, но думаю, что вместо этого можно добавить атрибут, еще не пробовал.