我正在使用JSF 2.2(Myfaces 2.2.9)。
我想在JSF中迭代消息以显示错误,我在使用ui:repeat元素时遇到了一些问题。
我的.xhtml页面:
message size = #{facesContext.messageList.size()}
<br />
<ui:repeat var="msg" value="#{facesContext.messageList}">
#{msg.detail}
</ui:repeat>
提交表单时,它会调用我的支持bean的功能 在该函数中,我添加了一个“INFO”全局消息,当我的.xhtml页面显示时,我得到它:
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "info message", "info message"));
然后显示:
message size = 1
info message
但是如果我将严重性更改为SEVERITY_ERROR:
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "info message", "info message"));
然后视图不显示任何消息,即使大小不为空:
message size = 1
如果我只是在信息消息后添加错误消息:
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "info message", "info message"));
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "error message", "error message"));
message size = 2
似乎添加了一个与INFO不同的严重信息正在搞砸事情。 任何帮助将不胜感激,这让我疯狂......
我检查了很多关于生命周期(BalusC答案)的答案,我理解的是ui:repeat作为渲染时间执行。所以它应该有用。