当组件使用ajax失去焦点而不是等待手动提交表单时,如何在输入组件上触发验证?
答案 0 :(得分:16)
将<f:ajax event="blur">
放入UIInput
组件中,该组件会重新呈现与相关组件相关联的<h:message>
。
<h:inputText id="foo" value="#{bean.foo}" required="true">
<f:ajax event="blur" render="fooMessage" />
</h:inputText>
<h:message id="fooMessage" />
另请参阅JSF 2.0 tutorial with Eclipse and Tomcat - the view和finetuning validation
答案 1 :(得分:3)
试试这段代码:
<h:inputText value="#{bean.value}" valueChangeListener="#{bean.validateValue}">
<f:ajax event="blur" render="valueError"/>
</h:inputText>
<h:outputText id="valueError" value="#{bean.valueErrorMessage}" style="color: red;" />
如果用户更改了输入组件中的值,则可以使用valueChangeListener对其进行验证。如果用户然后移动到另一个输入组件,则将呈现ouputText组件。如果验证失败,您可以在那里显示消息。