【问题标题】:Execute p:ajax only if input is valid仅当输入有效时才执行 p:ajax
【发布时间】:2015-08-12 14:26:27
【问题描述】:

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

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 您也可以使用来自监听器的 javascript 回调。
    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多