【问题标题】:Trigger JSF validation using ajax after focus lost焦点丢失后使用 ajax 触发 JSF 验证
【发布时间】:2011-08-12 21:03:49
【问题描述】:

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

【问题讨论】:

    标签: ajax validation jsf


    【解决方案1】:

    试试这个代码:

    <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 为前缀。另外,您通常希望使用&lt;h:message&gt; 来显示验证消息。
    • 我试图纠正它,但 stackoverflow 不允许只更改帖子中的两个字母。他们需要 5 个所以我就这样离开了
    • 第三件事是valueChangeListener 不打算进行验证。使用普通的验证器。
    • 为了正确性和日后参考,我认为BalusC的答案要正确得多
    【解决方案2】:

    &lt;f:ajax event="blur"&gt; 放入UIInput 组件中,该组件将重新呈现与相关组件关联的&lt;h:message&gt;

    <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 viewfinetuning validation

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 2013-06-19
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2011-11-03
      • 1970-01-01
      相关资源
      最近更新 更多