WELD-000321 Не найден разговор для восстановления идентификатора 3 при обновлении страницы
Я получаю сообщение об ошибке при обновлении страницы, отображаемой во время разговора. Как избежать этой ошибки?
Ситуация:
У меня есть 2 JSF-страницы, index.xhtml и age.xhtml.
index.xhtml содержит форму, в которой пользователь вводит дату рождения (свойство базового компонента "bean"). Когда пользователь отправляет форму, age.xhtml отображает возраст в соответствии с датой рождения.
Форма отправляется с перенаправлением:
<h:commandButton value="Submit" action="#{bean.computeAge()}" />
метод computeAge:
conversation.begin();
return "age?faces-redirect=true";
Один и тот же боб "bean" используется на обеих страницах. У этого боба поддержки есть область разговора.
Страница age.xhtml:
Your age: #{bean.age} years
метод getAge:
if (!conversation.isTransient()) {
conversation.end();
}
return ejb.computeAge(birthdate);
Все в порядке, кроме случаев, когда я обновляю age.xhtml. Затем я получаю это сообщение об ошибке: WELD-000321 Не найден разговор для восстановления для идентификатора 3
URL, отображаемый браузером до и после обновления:http://localhost:8080/tpjsf1/faces/age.xhtml?cid=3
Проблема возникает из-за cid=3 в конце. Можно ли избежать появления страницы ошибки, когда пользователь обновляет age.xhtml?
1 ответ
Ошибка возникает при завершении разговора в методе getAge. В вашем случае разговор должен закончиться, когда вы вернетесь к странице указателя. Чтобы обработать несуществующее исключение разговора, добавьте теги ниже в веб-XML. Это перенаправит исключение на указанную страницу.
<error-page>
<exception-type>org.jboss.weld.context.NonexistentConversationException</exception-type>
<location>/my-foo-bar-exception-page.xhtml</location>
</error-page>