JSF 2 - очистка атрибутов компонента при загрузке страницы? - PullRequest
1 голос
/ 18 марта 2010

Реальный вопрос: Есть ли способ очистить определенные атрибуты для всех компонентов при начальной загрузке страницы?

Справочная информация:

В моем приложении у меня есть уровень внешнего интерфейса JSF 2.0, который взаимодействует с уровнем обслуживания (уровень обслуживания состоит из компонентов Spring, которые вводятся в управляемые компоненты).

Сервисный уровень выполняет свою собственную проверку, и я делаю ту же проверку на уровне внешнего интерфейса, используя мои собственные классы проверки, чтобы как-то избежать дублирования кода. Эти классы валидаторов не являются валидаторами JSF, они просто POJO.

Я выполняю проверку только для действия, поэтому в методе действия я выполняю проверку, и только если она действительна, я обращаюсь к уровню обслуживания.

Когда я делаю свою проверку, я устанавливаю styleClass и заголовок для UIComponents, используя отражение (поэтому, если UIComponent имеет методы setStyleClass (: String) или setTitle (: String), тогда я использую их).

Это работает хорошо, и при ошибке проверки я вижу красиво стилизованное текстовое поле с всплывающим окном, содержащим сообщение об ошибке, если навести на него курсор. Однако, поскольку компонент связан с управляемым компонентом Session Scoped, кажется, что эти атрибуты остаются неизменными. Поэтому, если я ухожу и возвращаюсь на ту же страницу, styleClass и title все еще находятся в состоянии ошибки.

Есть ли способ очистить атрибуты styleClass и title при каждой начальной загрузке страницы?

Спасибо

Джеймс

P.S. Я использую метод действия для проверки из-за некоторых проблем, которые у меня были раньше с JSF 1.2 и его методами проверки, но я не могу вспомнить почему ... вот почему я использую метод действия для проверки.

1 Ответ

0 голосов
/ 18 марта 2010

Хорошо, поэтому я должен использовать PhaseListener, см. эту запись в блоге BalusC и эту другую запись в блоге , это гораздо лучший способ сделать то, что я уже делаю - установка styleClass вручную с помощью отражения - который получает все компоненты с сообщениями и выделяет их ... Я собираюсь сделать то же самое, однако думаю, что вместо этого можно добавить атрибут, еще не пробовал.

...