在重定向后保留JSF消息
我有一个JSF页面(使用MyFaces2.0),它在第一次显示时会收集一些数据。如果它找不到一些信息,它应该提供一条这样的消息,并重定向回另一个页面。我尝试使用这里找到的解决方案(setKeepMessages(true)),但重定向后消息不会显示。唯一的区别是我没有使用导航规则,而是在外部上下文中调用redirect()调用,因为这不是在正常操作中发生的 相关代码:在重定向后保留JSF消息,jsf,jsf-2,myfaces,Jsf,Jsf 2,Myfaces,我有一个JSF页面(使用MyFaces2.0),它在第一次显示时会收集一些数据。如果它找不到一些信息,它应该提供一条这样的消息,并重定向回另一个页面。我尝试使用这里找到的解决方案(setKeepMessages(true)),但重定向后消息不会显示。唯一的区别是我没有使用导航规则,而是在外部上下文中调用redirect()调用,因为这不是在正常操作中发生的 相关代码: public void redirectToPageWithMessage(String inPage, String mess
public void redirectToPageWithMessage(String inPage, String message, FacesMessage.Severity severity){
getFlash().setKeepMessages(true);
addMessage(message, severity);
try {
getFacesContext().getExternalContext().redirect(inPage);
} catch (IOException e) {
e.printStackTrace();
}
}
不幸的是,这似乎不起作用。重定向发生得很好,但是
ExternalContext.redirect()
解决它,而是为了处理您的操作的结果
也就是说,由我的按钮调用的我的操作返回一个
字符串
(结果),该字符串指示要转到下一页的导航规则。在这个系统中,消息被保留下来。有没有更好的方法(除了调用redirect())在一个不会返回结果的函数中重定向?在尝试了各种方法之后,这是我在JBoss中使用redirect而不是forward的唯一解决方案。你是否错过了关于setKeepMessages(true)的第一段
和行getFlash().setKeepMessages(true)代码>问题的代码片段?他已经在使用Flash,但它与ExternalContext#redirect()
组合使用时无法正常工作。因此,您现在正在转发而不是重定向。因此,您根本不需要闪存#setKeepMessages()
。或者你实际上根本没有使用它?你是对的,我停止使用它:)事实上,当我遇到这个bug时,我发现了。