2015-06-16 75 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