Я использую OmniFacesFullAjaxExceptionHandler
в Tomcat7 и JSF 2.1 для обработки ViewExpiredException
. Я установил те же страницы ошибок, что и витрина OmniFaces. Look here for error pages и here for template.Избавьтесь от параметра jsessionid = xxx path в URL-адресе при использовании кнопки h:
Он отлично работает. Когда сеанс истек, я заканчиваю страницу с ошибкой expired.xhtml
. Однако, когда я нажимаю на ссылку ниже на странице ошибки,
<p><a href="#{requestScope['javax.servlet.error.request_uri']}">Back to initial page.</a></p>
тогда я получаю следующее исключение:
com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing resource injection on managed bean
Это не является большой проблемой. Мне нужна кнопка, которая в любом случае указывает пользователю на домашнюю страницу. Поэтому я заменил его на кнопку ниже:
<h:button value="Home" outcome="logout" />
вместе с этой навигации случае:
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>logout</from-outcome>
<to-view-id>/stdPortal/index.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
Навигационная взял меня на нужную страницу, однако идентификатор сеанса появляется в URL:
https://localhost/stdPortal/index.xhtml;jsessionid=B68784B4ED8882A6575A2EE4012AF1B5
Я не хочу этого. Как я могу избавиться от него? Я хочу URL быть похожим:
https://localhost/stdPortal/index.xhtml
@ BalusC, как обычно, гений. Вы всегда понимаете проблему и обеспечиваете идеальное решение. Не зная, что они должны искать «фрагмент фрагмента jsessionid», я не смог найти решение. Почему jsession хранится в url является TomcatBug или представляет собой некоторую техническую проблему. – user1594895
Фрагмент 'jsessionid' будет добавлен к URL-адресам, если новый сеанс был установлен во время ответа. Необходимо также увеличить размер буфера ответа до того же размера, что и ваша самая большая страница. – BalusC