Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 当出现验证错误时,阻止打开确认对话框_Validation_Jsf 2_Primefaces_Dialog_Messages - Fatal编程技术网

Validation 当出现验证错误时,阻止打开确认对话框

Validation 当出现验证错误时,阻止打开确认对话框,validation,jsf-2,primefaces,dialog,messages,Validation,Jsf 2,Primefaces,Dialog,Messages,我有一个手风琴面板,这是一个描述选项卡内的文本区域。我正在尝试编辑描述并保存它。我正在验证文本区域,以便最大字符数不应超过1000个字符。我正在使用显示验证消息。在实际保存之前,将显示确认对话框以确认保存 <p:messages showDetail="true" autoUpdate="true" /> <p:accordionPanel dynamic="true"> <p:tab id="_0" title="description">

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

<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个字符并试图保存,则验证消息会短暂出现,然后弹出确认对话框,导致验证消息消失。当出现验证错误时,如何防止弹出确认对话框?

我认为您可以使用javascript验证:

<script type="text/javascript">
function test(){
// validation here
if(isValidated){saveDialog.show()}
else alert('exceed ...');
}
</script>
<p:commandButton value="save"  onclick="test()"/>

我认为您可以使用javascript来验证:

<script type="text/javascript">
function test(){
// validation here
if(isValidated){saveDialog.show()}
else alert('exceed ...');
}
</script>
<p:commandButton value="save"  onclick="test()"/>
如果验证没有失败,您需要在完成保存按钮时签入。PrimeFaces将一个全局args对象放入JavaScript作用域,该作用域又有一个boolean validationFailed属性。你可以利用它:

<p:commandButton value="save" oncomplete="if (args &amp;&amp; !args.validationFailed) saveDialog.show()"/>
这样,只有验证未失败时,才会显示确认对话框。

如果验证未失败,则需要在完成保存按钮时签入。PrimeFaces将一个全局args对象放入JavaScript作用域,该作用域又有一个boolean validationFailed属性。你可以利用它:

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

这样,只有验证未失败时才会显示确认对话框。

这完全违背了服务器端验证的目的和功能。绝对不建议使用这种方法。是的,我忘记了args.validationFailed,所以我建议使用,谢谢!这完全违背了服务器端验证的目的和功能。绝对不建议使用这种方法。是的,我忘记了args.validationFailed,所以我建议使用,谢谢!