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

Execute p:ajax only if input is valid

我想使用 p:ajax 显示带有搜索建议的 primefaces 叠加层,如下所示:

<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 处理程序并再次检查输入作为解决方法。

Execute p:ajax only if input is valid

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

备选方案是仅在没有验证错误时才执行 oncomplete

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

出于此处提到的原因,双重检查和丑陋的 XML 转义是必要的:Keep p:dialog open when a validation error occurs after submit