【发布时间】:2011-08-12 21:03:49
【问题描述】:
当组件失去焦点时,如何使用ajax而不是等待手动提交表单来触发输入组件的验证?
【问题讨论】:
标签: ajax validation jsf
当组件失去焦点时,如何使用ajax而不是等待手动提交表单来触发输入组件的验证?
【问题讨论】:
标签: ajax validation jsf
试试这个代码:
<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 组件。如果验证失败,您可以在此处显示一条消息。
【讨论】:
on 为前缀。另外,您通常希望使用<h:message> 来显示验证消息。
valueChangeListener 不打算进行验证。使用普通的验证器。
将<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
【讨论】: