默认情况下,Growl会在对话框中加载

时间:2015-06-16 06:12:54

标签: primefaces

我有一个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>

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

您的对话框可能与打开它的按钮的格式相同。并且打开按钮不必要地提交表单(如果除了打开对话框之外没有做任何事情,则不必要地提交)。

修复打开按钮和对话框的单独表单。对话框表单通常在对话框中。将type="button"添加到打开对话框的p:commandButton,以便它不会发出不必要的POST请求。

答案 2 :(得分: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字段的对象和一个在按下Save按钮时调用的方法。

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代码。

相关问题