наш клиент не хочет иметь сеанс обработки с печеньем, и это также вызовет проблемы с Apache/mod_rewrite шлюза, поэтому я попытался использоватьViewExpiredException с режимом отслеживания URL в Glassfish3
<tracking-mode>URL</tracking-mode>
в нашей сети .xml. Это должно быть все с Glassfish3/Servlet 3.0. Однако в настоящее время я получаю ViewExpiredExceptions при попытке войти в систему (это не запрос AJAX):
<p:commandButton id="submit"
value="${msg['Login.submit.label']}"
action="#{loginBean.login}"
ajax="false"/>
Я также попытался сохранить сессию на стороне клиента, чем я могу видеть JSESSIONID в URL, но это бросает NotSerializableExceptions для моих @EJB. Есть идеи? Я что-то пропустил? Он отлично работал с файлами cookie.
UPDATE: LoginBean.login возвращает «Home.xhtml? Faces-redirect = true», ожидаемое поведение при нажатии команды Command: POST на Login.xhtml, моей странице входа, перенаправлении и GET на Home.xhtml.
ВТОРОЕ ОБНОВЛЕНИЕ: Похоже, что мое действие так и не вызвано, я напрямую получаю сообщение ViewExpiredException и код ошибки HTTP 500.
ТРЕТЬЕ ОБНОВЛЕНИЕ: Похоже, что HttpSession всегда имеет значение null с режимом отслеживания, установленным для URL-адреса, и файлы cookie корректно созданы HttpSession. Не должно ли FacesServlet создавать сеанс и добавлять JSESSIONID в URL-адрес, если сеанс отсутствует?
ДРУГОЙ UPDATE: С
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
сессия будет создана на постбэка. Но чем я столкнулся с
java.io.NotSerializableException
.
Является ли ваша задняя сторона видимой? – Makky
@Makky LoginBean запрашивается, но изменение этого на ViewScoped не помогает. –