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

时间:2015-07-13 14:12:18

标签: validation jsf jsf-2.2

我们如何从<tr> <td>open</td> <td>http://cnn.com</td> <td></td> </tr> <tr> <td>storeText</td> <td>//h2[@class=&quot;banner-text banner-text--natural&quot;]</td> <td>buttonText</td> </tr> <tr> <td>echo</td> <td>${buttonText}</td> <td></td> </tr> 删除特定的FacesMessage。假设我的列表包含两个FacesMessages,其详细信息(FacesContext)为getDetail()Mandatory Fields,我想删除Invalid Account Number Mandatory Fields

以下是我的示例代码:

FacesMessage

由于上面的代码有时会给我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(); } } } 异常

1 个答案:

答案 0 :(得分:0)

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

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

报告UnsupportedOperation是因为我以前试图访问列表中的元素不存在元素