仅当输入有效时才执行p:ajax

时间:2015-08-12 14:26:27

标签: jsf primefaces

我希望使用p:ajax来显示带有搜索建议的素数叠加层,如下所示:

<p:inputText value="#{bean.input}" required="true" 
    validatorMessage="Add at least 3 characters">
    <f:validateLength minimum="3" maximum="64"/>
    <p:ajax event="keyup" delay="200" process="@this" 
        listener="#{bean.createSuggestions()}"
        update="overlay"
        oncomplete="showOverlay()"/>
</p:inputText>

问题是,没有进行验证。

我可以使用javascript onstart处理程序并再次检查输入作为解决方法。

1 个答案:

答案 0 :(得分:3)

  

仅在输入有效时才执行p:ajax

只有在客户端验证时才有可能,因为您已经找到了解决方法。

替代方法是仅在没有验证错误时才执行oncomplete

oncomplete="if (args &amp;&amp; !args.validationFailed) showOverlay()"

由于这里提到的原因,必须进行双重检查和丑陋的XML转义:Keep p:dialog open when a validation error occurs after submit