我以这种方式添加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
发布于 2015-01-23 14:34:41
当faces消息已经呈现时,迭代器将为空。当呈现响应阶段已经发生时,就会发生这种情况。这反过来意味着,在呈现响应阶段之后,您试图删除它。例如,在一个挂在PhaseListener上的afterPhase() of PhaseId.RENDER_RESPONSE中。
一种解决方案是将作业转移到beforePhase()。
https://stackoverflow.com/questions/28107797
复制相似问题