Primefaces 3.4:对话框在第一次打开时显示验证消息

时间:2012-09-20 04:58:20

标签: java-ee dialog primefaces

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

<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");  
}

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

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:3)

不,对我不起作用。 我只在命令按钮上使用下面的代码

public void addCountry(){

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

}

答案 1 :(得分:2)

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

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

  1. 正确填写输入文本,对话框正常关闭
  2. 输入文字为空。对话框保持打开状态,并显示验证错误。
  3. 我希望它可以提供帮助!