JSF2 и JBoss: сообщения в области Flash не сохраняются после перенаправления-получения, когда указан корневой виртуальный хост
Я использую JBoss EAP 6.1 автономно с JSF 2.1.19 и настроил свой хост в качестве виртуального сервера в корневом контексте. (При использовании контекста без полномочий root, например / myApp, все работает нормально). Я пытаюсь показать информационные сообщения FacesContext после перенаправления с помощью флеш-области. По какой-то причине я не всегда получаю сообщение Faces для отображения на второй странице. Иногда это так, иногда нет. Иногда это появляется на первой странице.
Вот мой бин JSF2:
@ManagedBean
@RequestScoped
public class TestBean {
public String submit() {
System.out.println("...adding faces info message....");
FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);
FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Faces Info Message"));
return "/second/secondPage?faces-redirect=true";
}
}
Соответствующий firstPage.xhtml:
<h:form>
<h:commandButton value="ClickMe" action="#{testBean.submit()}"/>
</h:form>
Соответствующий secondPage.xhtml:
<h:body>
<h:messages id="globalMessages" globalOnly="true"/>
<h:link outcome="/firstPage" value="Back"/>
</h:body>
JBoss standalone.xml:
<subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="myApp" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="myApp" enable-welcome-root="false" default-web-module="myApp">
<alias name="localhost"/>
</virtual-server>
</subsystem>
jboss-web.xml, упакованный с myApp:
<jboss-web>
<context-root>/</context-root>
<virtual-host>myApp</virtual-host>
</jboss-web>
Пожалуйста помоги! Я полностью озадачен этим.
1 ответ
Оказывается, это ошибка в JBoss. FacesMessages должным образом не переживает пост-редирект-get при использовании приложения с корневым контекстом. Подано здесь: https://bugzilla.redhat.com/show_bug.cgi?id=1017242