当存在验证错误时,阻止打开确认对话框 [英] Prevent confirmation dialogue from opening when there's a validation error

查看:27
本文介绍了当存在验证错误时,阻止打开确认对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Accordion面板的选项卡中有一个文本区,它是一个描述。我正在尝试编辑描述并保存它。我正在验证文本区,以便最大字符不应超过1000个字符。我正在使用<p:message>显示验证消息。在实际保存之前,将显示一个确认对话框以确认保存。

<p:messages showDetail="true" autoUpdate="true" />

<p:accordionPanel dynamic="true">
    <p:tab id="_0" title="description">
        <p:inputTextarea styleClass="max" id="editDesc1" widgetVar="txtBox" value="#{testBean.description}" 
            rows="6" cols="150" validatorMessage="#{msg.AddSystem_validationMsg5}" autoResize="false">
            <f:validateLength maximum="1000"></f:validateLength> 
        </p:inputTextarea>

        <p:commandButton value="save"  oncomplete="saveDialog.show()"/>

        <p:confirmDialog message="#{msg.EditSystem_confirmMsg1}" width="200" 
            showEffect="explode" hideEffect="explode" 
            header="Confirm" severity="alert" widgetVar="saveDialog"> 
            <p:commandButton value="#{msg.EditSystem_confirmAnswer1}"  action="#{testBean.saveEdit}" process="@this" /> 
            <p:commandButton value="#{msg.EditSystem_confirmAnswer2}" onclick="saveDialog.hide()" type="button" /> 
如果用户输入的字符超过1000个并尝试保存,则验证消息会显示一小段时间,然后弹出确认对话框,导致验证消息消失。如何防止在出现验证错误时弹出确认对话框?

推荐答案

如果验证没有失败,您需要签入oncomplete保存按钮。PrimeFaces将一个全局args对象放入JavaScript作用域,该作用域又具有一个布尔validationFailed属性。您可以使用它:

<p:commandButton value="save" oncomplete="if (args &amp;&amp; !args.validationFailed) saveDialog.show()"/>

这样,只有在验证没有失败的情况下才会显示确认对话框。

这篇关于当存在验证错误时,阻止打开确认对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆