Я пытаюсь перенести существующее приложение JSF из JSF 1.2 в JSF 2.0.Я использовал MyFaces 1.2.8 и хочу использовать MyFaces 2.0.5.
Что я испытываю с MyFaces 2.0.5, так это то, что первоначально запрошенная страница будет отображаться правильно, но любая попытка перейти на другую страницуприведет к ViewExpiredException
.Сообщение:
Не удалось найти сохраненное состояние просмотра для идентификатора представления: /SomePageName.jsf (где «SomePageName» - это имя страницы, с которой я перемещаюсь)
Если я вручную введу удобный для лица URL-адрес страницы, к которой я хотел перейти, например http://localhost:8080/MYAPP/SomeOtherPage.jsf, тогда другая страница будет правильно отображена.Приложение также распознает, что у меня уже есть сеанс, и не пытается создать новый.
Мое приложение состоит исключительно из файлов JSP, как и следовало ожидать от приложения JSF 1.2.Мое намерение состоит в том, чтобы сначала заставить приложение работать в JSF 2.0, а затем переписывать каждую страницу как Facelet по одному.
Некоторые из моих правил навигации выглядят так:
<navigation-rule>
<display-name>ManagePorts</displayName>
<from-view-id>/ManagePorts.jsp</from-view-id>
<navigation-case>
<from-outcome>REFRESH</from-outcome>
<to-view-id>/ManagePorts.jsp</to-view-id>
</navigation-case>
</navigation-rule>
инекоторые выглядят так:
<navigation-rule>
<navigation-case>
<from-outcome>MANAGE_PORT_LIST</from-outcome>
<to-view-id>/ManagePorts.jsp</to-view-id>
</navigation-case>
</navigation-rule>
(я понимаю, что результат REFRESH - не лучший способ сделать что-то, но это уже было в старом приложении 1.2, и я не планирую его удалять, пока яначать миграцию)
Может кто-нибудь сказать мне, что я могу делать неправильно, что может привести к тому, что навигация взорвется вот так?