2015-06-16 110 views
0

我有一個primefaces對話框,裏面有一個輸入文本區域。文本區域是必填字段。點擊按鈕時,我收到咆哮消息。但即使第一次打開對話框,我仍然會聽到咆哮聲。我錯在哪裏?咆哮默認加載對話框

<p:dialog id="dumpNotesDialog" > 
<p:growl autoUpdate="true" showDetail="true" id="message" /> 
<p:inputTextarea required="true" requiredMessage="Enter notes to save" id="dumpnotes" value="#{postProcessedDump.keyedinContent}" /> 
<p:commandButton value="Save" actionListener="#{dumpController.saveDumpNotesContent}" update="message" /> 
</p:dialog> 
+0

請問您可以從您打開此對話框的位置發佈代碼。 – Makky

回答

0

你應該在對話形式,如下面的代碼

<h:body> 
     <h:form id="formId"> 
      <p:commandButton value="test" onclick="PF('dlg').show()" /> 

     </h:form> 
     <p:dialog id="dumpNotesDialog" widgetVar="dlg" appendTo="@(body)"> 
      <h:form> 
       <p:growl autoUpdate="true" showDetail="true" id="message" /> 
       <p:inputTextarea required="true" requiredMessage="Enter notes to save" id="dumpnotes" /> 
       <p:commandButton value="Save" actionListener="#{dumpController.saveDumpNotesContent}" update="message" /> 
      </h:form> 
     </p:dialog> 
    </h:body> 
+0

爲什麼'應該'是?請解釋清楚爲什麼它可能需要? – Kukeltje

0

你的對話框可能位於相同的形式,打開它的按鈕。然後打開按鈕不必要地提交表單(不必要的,如果它沒有做任何事情,只是打開對話框)。

修復爲打開按鈕和對話框設置單獨的窗體。對話框通常在對話框內。將type="button"添加到打開對話框的p:commandButton,以便它不會發出不必要的POST請求。

+0

_「您的對話框**可能**位於相同的表格中」_:最好在回答之前先在評論中要求澄清 – Kukeltje

+0

這很明顯。 –

0

昨天,我爲你寫了一個小例子。我們不知道你的ManagedBean代碼,因爲這個我想這個例子是一個簡單的Java代碼。 視圖只有一個顯示對話框的按鈕,裏面有一個輸入文本區域和一個名爲Save的按鈕,用於調用ManagedBean的方法。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui"> 

     <h:head> 
      <title>Test Primefaces</title> 
     </h:head> 

     <h:body> 
      <h:form> 
       <p:commandButton value="Open" type="button" onclick="PF('dlg1').show();" /> 
       <p:dialog id="dumpNotesDialog" widgetVar="dlg1"> 
        <p:growl autoUpdate="true" showDetail="true" id="message" /> 
        <p:inputTextarea required="true" requiredMessage="Enter notes to save" id="dumpnotes" value="#{dumpController.message}" /> 
        <p:commandButton value="Save" actionListener="#{dumpController.saveDumpNotesContent}" update="message" /> 
       </p:dialog> 
      </h:form> 
     </h:body> 
    </html> 

的ManagedBean碼具有用於結合textarea的字段並且當按下保存鍵時調用一個方法的對象。

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.context.FacesContext; 
import javax.faces.event.ActionEvent; 

@ManagedBean 
public class DumpController { 

    private String message; 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public void saveDumpNotesContent(ActionEvent actionEvent) { 
     /*TODO Your opearations here!*/ 

     final FacesContext context = FacesContext.getCurrentInstance(); 

     context.addMessage(null, new FacesMessage("Successful", "Your message: " + message)); 
    } 
} 

如果您想要更好的答案,請包括您的Java代碼。

+0

我無法理解OP的問題(可能是我的限制),我無法理解您的答案能解決什麼(與OP所做的不同)。在回答之前確保問題確定並清楚總是比較好。 – Kukeltje