【发布时间】:2011-02-24 12:53:01
【问题描述】:
在我的屏幕上,我有一个下拉菜单(选择框),在选择该下拉菜单中的任何选项时,我使用 javascript/css 在选择框旁边显示一个或多个文本框 - display:none 和 display :堵塞。所有这些输入控件都采用相同的 jsf 格式。每个输入控件都有自己的验证器。问题是假设用户从选择框中选择 option1 并且没有为 inputbox1 输入值或输入错误值,我在验证器中添加自定义 FacesMessage 并显示适当地假设用户第二次选择 option2 并为 inputbox2 输入错误的值,然后在验证器中添加另一个 FacesMessage。但是现在两个消息都显示了 - 意味着 - inputbox1 和 inputbox2 的消息 - 这是错误的 我的假设是,发生这种情况是因为它们以相同的形式存在并且它们的实例尚未在FacesContext 和 UIView 中。我决定以这种方式删除消息
Iterator<FacesMessage> msgIterator = FacesContext.getCurrentInstance().getMessages();
while(msgIterator.hasNext())
{
msgIterator.next();
msgIterator.remove();
}
但这有时会给出 java.util.NoSuchElementException org.apache.myfaces.shared_impl.renderkit.html.HtmlMessagesRendererBase$MessagesIterator.next
所以 2 个问题:
1) 以这种方式删除 FacesMessage 有什么问题?我正在使用 myfaces-api-1.2.3.jar 和 myfaces-impl-1.2.3.jar
2) 是否有更好的方法来处理我的场景?我只想在每次处理 jsf 请求时显示相关消息
谢谢
【问题讨论】:
标签: jsf