2010-11-22 2 views
1

В настоящее время я изучаю JSF 2.0, и я не знаю, как инициализировать что-то в моем CDI-компоненте каждый раз, когда доступна страница jsf?JSF CDI Инициализация бина на каждой странице доступа

Например, допустим, в моем случае у меня есть один CDI-компонент, который используется на одной странице JSF. Где-то внутри компонента я хотел бы запросить и инициализировать что-либо или проверить авторизацию каждый раз, когда страница обращается (не каждый раз, когда вызывается метод действия).

Я могу поместить его в конструктор bean, но это не гарантирует, что конструктор будет вызван для каждого вызова страницы jsf? Или мне нужно позвонить с помощью # {myBean.initialize()} на странице JSF?

С уважением, Альберт Kam

ответ

2

Если вы объявите управляемый компонент @RequestScoped, он будет создан для каждого HTTP-запроса (да, это «каждый раз, когда открывается страница JSF», как вы говорите в терминах пользователя). Вы можете просто выполнить задание инициализации в конструкторе bean или @PostConstruct. Это не имеет никакого отношения к CDI.

Проверка авторизации при каждом обращении к странице (не каждый раз, когда вызывается метод действия).

Для этого javax.servlet.Filter или очень возможно javax.faces.event.PhaseListener - гораздо лучшее решение.

+0

Спасибо за отзыв! – bertie

+0

Добро пожаловать. – BalusC

0

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

Смежные вопросы