我以这种方式添加FacesMessages
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(severity, message, null));
我尝试以这种方式删除它们
FacesContext context = FacesContext.getCurrentInstance()
Iterator<FacesMessage> it = context.getMessages();
while (it.hasNext()) {
FacesMessage message = it.next();
if (message.getSeverity() == FacesMessage.SEVERITY_WARN) {
it.remove();
}
}
此迭代器始终为空且消息多次累积和显示的问题。我也知道this solution
答案 0 :(得分:0)
当面部消息已经呈现时,迭代器将为空。当渲染响应阶段已经发生时,这将发生。这反过来表明你试图在渲染响应阶段之后删除它。例如,位于PhaseListener
afterPhase()
内的PhaseId.RENDER_RESPONSE
内。
一种解决方案是将作业移至beforePhase()
。