验证输入数据时显示对话框<p:confirmdialog> </p:confirmdialog>

时间:2013-12-26 23:47:40

标签: jsf-2 primefaces commandbutton

对于我的学校项目,我必须实现一个迷你网站,我使用primefaces框架。在按下“保存”按钮后,我想要一种形式: 1 - 验证输入的数据。这就是我放

的原因
<p:message for="date" /> and <p:message for="zone" /> 

由于值不正确,因此不应显示对话框。 2 - 当所有数据都正确时,我单击“保存”,我想显示我的对话框。

现在我做不到。你能帮助我吗?我使用的是版本4的表面。

<h:form>
<p:panel id="panel" header="Create"  style="margin-bottom:10px;border-color:blueviolet" >
    <p:messages id="messages" /> 
        <h:panelGrid columns="3">
            <h:outputLabel for="date" value="Date : *" />  
            <p:calendar locale="fr" id="date" value="#{newBusinessCtrl.exercice.debut}" required="true" label="date" showButtonPanel="true"/>   
            <p:message for="date" />  

            <h:outputLabel for="zone" value="Zone Monétaire: *" /> 
            <p:selectOneMenu id="zone" value="#{newBusinessCtrl.exercice.zoneChoice}"  >
                <f:selectItem itemLabel="Choice " itemValue="" />
                <f:selectItems value="#{newBusinessCtrl.exercice.zones}" var="azone"
                    itemLabel="#{azone}" itemValue="#{azone}" >
                </f:selectItems>
                <p:message for="zone" />
            </p:selectOneMenu>
            <p:message for="zone" /> 
        </h:panelGrid>  
</p:panel>
<p:commandButton update="panel" value="Save"   icon="ui-icon-check" style="color:blueviolet" onclick="choice.show()"/> 
<p:confirmDialog message="Would you like to create accounts automatically ?"
             header="Account creation" severity="alert"            
             widgetVar="choice" appendTo="@(body)">
        <p:button outcome="personalizeAccount" value="Personalize" icon="ui-icon-star" />
        <p:button outcome="autoAccount" value="Continue" icon="ui-icon-star" />
</p:confirmDialog>

2 个答案:

答案 0 :(得分:0)

只需在Backing Bean中显示对话框,如下所示:

网页:

 <p:commandButton update="panel" value="Save"   
                  icon="ui-icon-check"  
                  style="color:blueviolet" 
                  action="#{newBusinessCtrl.showDlg('choice')}"/> 

支持Bean:

 public void showDlg(String dlgName){
    RequestContext.getCurrentInstance().execute(dlgName+".show()");
}

验证失败后,操作将不会执行,因此对话框不会显示。

答案 1 :(得分:0)

如果验证没有失败。 PrimeFaces在JavaScript范围中放置一个全局args对象,该范围又具有布尔validationFailed属性。你可以在显示对话框之前检查它所以你可以这样使用它:

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