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