2013-02-06 89 views
1

我有一個具有必需屬性的字段。當我按接受按鈕來保存一些數據而不在該字段中輸入任何值時,會顯示一條錯誤消息。到現在爲止還挺好。 但是,如果之後我決定點擊取消按鈕,該錯誤消息將覆蓋原本應在<p:dialog/>元素內顯示的確認消息。Primefaces:必填字段消息覆蓋<p:dialog/>消息

注:相反,如果我使用<p:confirmDialog/>成分,似乎是因爲,我想,它採用了message=""屬性,沒有<p:messages/>標籤是沒有問題的。

XHTML

<p:dialog> 
<p:outputPanel> 
     <h:form> 

     <h:outputText value="Field:"/> 
     <p:inputText id="field" value="" type="text" required="true" requiredMessage="You must complete the field" />       
     <p:growl id="messages" showDetail="true"/> 

     <p:commandButton id="dialogCancel" value="Cancel" oncomplete="confirmCancelDialog.show();" actionListener="#{controller.addCloseWarn}" />  

     </h:form> 
</p:outputPanel> 
</p:dialog> 

<h:form> 
<p:dialog id="confirmCancelDialog" header="Warning!" widgetVar="confirmCancelDialog" modal="true" >           
    <p:messages id="closeMessage" showDetail="true" autoUpdate="true" />          
    <p:commandButton id="confirm" value="Accept" onclick="..." /> 
    <p:commandButton id="decline" value="Cancel" onclick="..." />    
</p:dialog> 
</h:form> 

豆控制器

public void addCloseWarn(ActionEvent actionEvent) { 
     FacesContext.getCurrentInstance().addMessage("closeMessage", new FacesMessage(FacesMessage.SEVERITY_WARN, null, 
          "Are you sure you want to leave the page?")); 
} 
+0

你可以發佈xhtml頁面的結構,並在其中輸入字段和按鈕的窗體的位置?這種形式有可能在另一種形式內的對話框? – partlov

+0

@partlov當然。我在那裏編輯了這篇文章。帶有對話框的表單與包含輸入字段的表單分開。 – CountD

回答

2

問題的取消按鈕,你的表單提交,執行驗證。您可以將process="@this"屬性添加到commandButton,因此表單的其他部分將不會被處理,並且您的addCloseWarn方法將被執行。

我還補充說這可能不是標準使用的message標籤。它用於顯示錯誤,警告和成功的消息,而不是確認問題。因此,使用confirmDialog或使用標準對話框,僅使用普通文本,然後單擊確定 - 取消按鈕。