【发布时间】:2015-11-25 10:01:02
【问题描述】:
我无法删除必填消息。 我有一个表单,其中有几个字段和一个按钮。 当我按下按钮时,将进行验证,检查是否必填字段填充了值,如果没有,则显示无效值/组件的必填消息。 现在我想从 selectOneMenu 中选择一个值或在 inputText 中输入一些内容,当我这样做时,我希望所需的消息消失,而无需再次按下按钮。
你会怎么做? 我试图用这样的方式删除消息,但它似乎不起作用:
Iterator<FacesMessage> msgIterator = FacesContext.getCurrentInstance().getMessages();
while (msgIterator.hasNext())
{
FacesMessage facesMessage = msgIterator.next();
msgIterator.remove();
}
你能帮我解决这个问题吗?
这里是示例代码:
<h:form id="mainForm">
<h:selectOneMenu required="true" id="dictionaryValueId" value="#{SomeBean.dictionarySelectedValue}">
<f:selectItem itemValue="#{null}" itemLabel="#{i18n['view.choose']}" />
<f:selectItems value="#{SomeBeanBean.dictionaryValuesMap}" var="element"
itemLabel="#{element.descripption}" itemValue="#{element.key}" />
<f:ajax event="change" execute="@this msgId" render="msgId dictionaryValueId"/>
</h:selectOneMenu>
<h:message id="msgId" style="display:none;" for="dictionaryValueId" />
...
<h:commandButton value="#{i18n['button.forward.name']}"
actionListener="#{SomeBean.forward}" >
<p:ajax process="@form" update="mainForm"/>
</h:commandButton>
【问题讨论】:
-
它可以与
f:ajax一起使用吗?如果不是,则与 PrimeFaces 无关(我认为不是) -
它可以在没有 primefaces 的情况下工作,但附加到 commandButton 的 ajax 不是问题。问题是如何在值更改时不使用 commandButton 使所需的消息消失。
-
我知道,但我询问了与标记有关的问题。仅 jsf 标记就足够了,或者 jsf-2 ;-)。检查了这个:stackoverflow.com/questions/32400491/… 和 stackoverflow.com/questions/6642242/…
-
好的,我会检查这个链接,让你知道结果如何。
-
所以你基本上是说
<f:ajax render="msgId">没用?