How to remove specific FacesMessage from FacesContext?

冷暖自知 提交于 2019-12-13 03:38:06

问题


How can we delete a specific FacesMessage from FacesContext. Lets say I have list which contains two FacesMessages whose detail(getDetail()) is Mandatory Fields and Invalid Account Number and I want to delete Mandatory Fields FacesMessage.

Below is my sample code :

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();
        }
     }
}

As my above code also giving me sometimes UnsupportedOperation exception


回答1:


Below is code snippet I wrote that fixed my issue

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();
    }
  }
}

And that UnsupportedOperation was reported because I was previously trying to access element unexistent element in list



来源:https://stackoverflow.com/questions/31385731/how-to-remove-specific-facesmessage-from-facescontext

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!