Validation 如何从FacesContext中删除特定的FacesMessage?

Validation 如何从FacesContext中删除特定的FacesMessage?,validation,jsf,jsf-2.2,Validation,Jsf,Jsf 2.2,如何从FacesContext中删除特定的FacesMessage。假设我有一个列表,其中包含两个FacesMessage,其详细信息(getDetail())为必填字段和无效账号,我想删除必填字段

如何从
FacesContext
中删除特定的
FacesMessage
。假设我有一个列表,其中包含两个FacesMessage,其详细信息(
getDetail()
)为
必填字段和
无效账号
,我想删除
必填字段

下面是我的示例代码:

ListIterator<?> cmessages = context.getMessageList().listIterator();
cmessages.hasPrevious();
while (cmessages.hasNext() && cmessages!=null) {

    FacesMessage msg =(FacesMessage) ((cmessages.next() instanceof FacesMessage)?cmessages.next():null);
    if(msg!=null){
        if(msg.getDetail().equals(messageDetail)){
              cmessages.next();
              cmessages.remove();
        }
     }
}
ListIterator cmessages=context.getMessageList().ListIterator();
cmessages.hasPrevious();
while(cmessages.hasNext()&&cmessages!=null){
FacesMessage msg=(FacesMessage)((cmessages.next()FacesMessage的实例)?cmessages.next():null);
如果(msg!=null){
if(msg.getDetail().equals(messageDetail)){
cmessages.next();
cmessages.remove();
}
}
}

由于我上面的代码有时也给我提供了
不支持操作
异常

下面是我编写的代码片段,修复了我的问题

public static void clearMessagesWithID(String messageID)
{
  String messageDetail = getErrorMessage(messageID);
  FacesContext context = FacesContext.getCurrentInstance();
  for (Iterator<FacesMessage> iterator = context.getMessages(); iterator.hasNext();) {
    FacesMessage msg = iterator.next();
    if (msg.getDetail().contains(messageDetail)) {
      // Remove the current element from the iterator and the list.
      iterator.remove();
    }
  }
}
公共静态无效clearMessagesWithID(字符串messageID)
{
字符串messageDetail=getErrorMessage(messageID);
FacesContext context=FacesContext.getCurrentInstance();
for(Iterator Iterator=context.getMessages();Iterator.hasNext();){
FacesMessage msg=iterator.next();
if(msg.getDetail().contains(messageDetail)){
//从迭代器和列表中删除当前元素。
iterator.remove();
}
}
}

报告了
不支持操作
,因为我以前试图访问列表中的元素unexistent元素

“有时给我不支持操作异常”良好的异常已经代表了问题的全部答案。这只是一个能够解释它们的问题。我们可以用外行的语言来翻译它们。因此,如果您对那些可以为您翻译异常细节的人隐藏所有异常细节,这是没有帮助的。异常和堆栈跟踪绝对不像无用的装饰。请详细说明。抱歉<报告了代码>不支持操作
,因为我以前试图访问列表中不存在的元素