1

我对 primefaces 对话框有一些问题。我有一个上下文菜单。当我单击上下文菜单时,它会显示一个对话框。此对话框包含一个带有所需输入文本的面板。显示对话框时,面板中会显示验证错误,因为输入文本为空。这个想法是仅当用户单击对话框的命令按钮时才显示验证错误。然后,当对话框打开时,它必须被清空。这意味着,没有验证错误,输入文本中也没有任何内容。似乎上下文菜单中的属性更新有问题。一方面,当用户第二次显示对话框时需要清空输入文本,但在第一次显示对话框时也会显示验证错误。

<p:contextMenu for="folderTree">  
    <p:menuitem value="New Folder" update="addFolderPanel" oncomplete="addFolderDialog.show()" actionListener="#{folderManagedBean.initDialog}" icon="ui-icon-plus"/>
</p:contextMenu> 


<p:dialog header="New Folder" widgetVar="addFolderDialog" modal="true" resizable="false"  
                      showEffect="clip" hideEffect="fold">  
    <p:outputPanel id="addFolderPanel">  
        <p:message id="defaultMessage" for="txAddFolder"/>  
        <h:panelGrid columns="2" cellpadding="4">  
             <h:outputText for="txAddFolder" value="Folder Name: *" />  
             <p:inputText id="txAddFolder" value="#{folderManagedBean.newFolderName}" required="true" requiredMessage="The field folder name is required."/> 
             <p:commandButton icon="ui-icon-check" value="OK" update="folderTree" oncomplete="handleDialogClose(xhr, status, args)" actionListener="#{folderManagedBean.addFolder}"/>
        </h:panelGrid>  
    </p:outputPanel>
</p:dialog> 

托管bean的代码:

public void initDialog() {
    this.newFolderName = "";
    RequestContext.getCurrentInstance().reset("form:addFolderPanel");  
}

基本上,我想知道为什么对话框在第一次打开时显示验证错误以及如何解决这个问题。

任何帮助将非常感激。

4

2 回答 2

3

不,不适合我。我仅在命令按钮上使用以下代码

公共无效添加国家(){

RequestContext.getCurrentInstance().reset("menuForm:add_Country_Dlg_Panel");
RequestContext.getCurrentInstance().execute("add_Country_Dlg.show();");

}

于 2013-10-02T06:36:03.590 回答
2

最后,我发现自己可以回答我的问题。

必须update从上下文菜单中删除该属性并将其添加update到 commandButton 的属性中。像这样,当用户打开对话框时,没有更新,因此没有验证错误。然后,当他单击按钮保存更改时,有两种情况:

  1. 输入文本正确填写,对话框正常关闭
  2. 输入文本为空。对话框保持打开状态并显示验证错误。

我希望它可以帮助!

于 2012-09-21T19:53:49.370 回答