Простое приложение jsf2.0: javax.faces.application.ViewExpiredException View не может быть восстановлен

В простом приложении jsf2.0 я получаю это исключение: javax.faces.application.ViewExpiredException View не может быть восстановлен.

В консоли я получаю следующую ошибку: org.portletfaces.bridge.BridgeException: сначала нужно вызвать setPortletContext(PortletContext)

Когда я выполнил свое приложение без использования jar Primefaces, оно работало правильно. Но после добавления jar Primefaces я начал получать это исключение.

Я использую Томкат 7.2. РЕДАКТИРОВАТЬ: в приложении всего 3 страницы и нет поддерживающего компонента. Ссылка на первой странице вызывает вторую страницу. Но когда я нажимаю на ссылку, я получаю эту ошибку, и вторая страница не отображается. Не могу понять причину проблемы. Пожалуйста помоги.


person Bosco    schedule 23.08.2012    source источник
comment
Если вы получаете `ViewExpiredException`, срок действия bean-компонента с областью видимости истек. Попробуйте обновить страницу.   -  person siebz0r    schedule 23.08.2012
comment
Привет .. Я еще не создал фасоль для выпечки. Приложение настолько крошечное, что в нем всего 3 страницы. Ссылка на первой странице вызывает вторую страницу. Но когда я нажимаю на ссылку, я получаю эту ошибку, и вторая страница не отображается.   -  person Bosco    schedule 23.08.2012
comment
Покажите нам соответствующий код. Без кода мы не можем увидеть, что не так.   -  person siebz0r    schedule 23.08.2012
comment
@ siebz0r: исключение не обязательно связано с наличием поддерживающего компонента с областью видимости. См. Также не восстановить"> stackoverflow.com/questions/3642919/   -  person BalusC    schedule 23.08.2012


Ответы (1)


В приложении всего 3 страницы и нет компонента поддержки. Ссылка на первой странице вызывает вторую страницу. Но когда я нажимаю на ссылку, я получаю эту ошибку, и вторая страница не отображается.

Это может произойти, если вы перемещаетесь по UICommand ссылкам/кнопкам. Вы вообще не должны перемещаться по ссылкам/кнопкам POST, а только по ссылкам/кнопкам GET.

Замените все те ссылки/кнопки UICommand, которые неправильно используются для навигации между страницами обычными UIOutcomeTarget ссылки/кнопки. Другими словами, замените <h:commandButton> на <h:button>, <h:commandLink> и <p:commandLink> на <h:link> и <p:commandButton> на <p:button>.

т.е. не используй

<h:form>
    <p:commandButton value="Go to next page" action="nextpage" />
</h:form>

но вместо этого используйте

<p:button value="Go to next page" outcome="nextpage" />

Смотрите также:

person BalusC    schedule 23.08.2012