失去焦点后使用ajax触发JSF验证

7

当组件失去焦点时,如何使用ajax触发输入组件的验证而不是等待表单手动提交?

2个回答

16

UIInput组件中放置一个<f:ajax event="blur">,它会重新渲染与该组件相关联的<h:message>

<h:inputText id="foo" value="#{bean.foo}" required="true">
    <f:ajax event="blur" render="fooMessage" />
</h:inputText>
<h:message id="fooMessage" />

另请参阅使用Eclipse和Tomcat创建JSF 2.0教程-视图细化验证


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组件。在那里,如果验证失败,您可以显示一条消息。

3
这个回答中的事件名称是错误的,不应该以“on”为前缀。此外,您通常应该使用<h:message>来显示验证消息。 - BalusC
我试图进行更正,但stackoverflow不允许在帖子中只更改两个字母。他们要求至少更改5个,所以我就这样留着了。 - Farouk Alhassan
1
第三件事是valueChangeListener不适用于验证。请使用普通验证器。 - BalusC
2
为了正确性和将来的参考,我认为BalusC的答案更加正确。 - Farouk Alhassan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接