Инициализация JSF CDI Bean при каждом доступе к странице - PullRequest
1 голос
/ 22 ноября 2010

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 22 ноября 2010

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

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

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

1 голос
/ 28 ноября 2010

Вы можете взглянуть на https://cwiki.apache.org/confluence/display/EXTCDI/JSF+Usage

0 голосов
/ 22 ноября 2010

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

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