Когда создается управляемый компонент и создается свойство компонента? - PullRequest
0 голосов
/ 30 ноября 2010

В нашем приложении мы используем jsf, у нас есть перенаправить пользователя на домашнюю страницу после истечения срока их сеанса. Для этого мне нужен путь к домашней странице, который я сохранил в своем управляемом бине выхода из системы в качестве свойства управляемого бина. Но после истечения сеанса, если я попытаюсь получить доступ к нему, возникнет исключение нулевого указателя (управляемый боб становится нулевым). Затем я решил попробовать альтернативное (т.е. создать класс выхода из системы вручную) и попытаться получить доступ к свойству, в то время как свойство, к которому я хочу получить доступ, становится нулевым. Как я могу получить к нему доступ? это свойство? Пожалуйста, помогите мне. Заранее спасибо.

Ответы [ 2 ]

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

В дополнение к предыдущему ответу:

Вы можете использовать (в web.xml)

<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>viewexpired.jsp</location>
</error-page>

Или параметры контекста вместо атрибутов сеанса. Смотри:

Или используйте (в Face-Context.xml)

<managed-bean-scope>application</managed-bean-scope> 

для вашего боба, поэтому он останется независимым от сессии.

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

Правильный способ сделать это - объявить фабрику обработчика исключений в face-config.xml, затем реализовать фабрику с помощью подкласса javax.faces.context.ExceptionHandlerFactory, а затем переопределить метод handle() в реализации javax.faces.context.ExceptionHandlerWrapper. Там вы должны проанализировать исключение для класса ViewExpiredException и в этом случае перенаправить на страницу с просроченным просмотром.

...