我有一个 JSF 页面(使用 MyFaces 2.0),它在第一次显示时会收集一些数据。如果它找不到某些信息,它应该提供一条消息,并重定向回不同的页面。我尝试使用此处找到的解决方案 Preserving FacesMessage after redirect for presentation through <h:message> in JSF (setKeepMessages(true)) 但重定向后消息不显示。我能挑出的唯一区别是我没有使用导航规则,我在外部上下文中调用了 redirect() 调用,因为这不会发生在正常操作中。
相关代码:
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();
}
}
不幸的是,这似乎不起作用。重定向发生得很好,但 < messages/> 标签没有显示消息。 redirect() 发生的方式有什么不同吗?
最佳答案
保存消息的代码在阶段结束后执行(请参阅 Flash.doPostPhaseActions(FacesContext) )。因此,预计它不起作用,但也许您可以在重定向之前调用 Flash.doPostPhaseActions。 Note 不是“干净”的解决方案,但它是可能的。
关于jsf - 重定向后保留 JSF 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7503113/