1

我正在使用 glassfish 和 eclipse 试用 Primefaces 3。

我想在创建或输入用户详细信息时使用 Primefaces 对话框。假设例如在一个页面中,我有一个创建按钮,单击该按钮将显示此对话框。

<p:dialog id="dialog"  widgetVar="dlg1">
    <h:form id="addMemberForm">
            <!-- More code here -->
            <f:facet name="footer">
                <p:commandButton value="Save"
                    actionListener="#{myBean.save}"
                    oncomplete="dlg1.hide()"  />
            </f:facet>
        </p:panelGrid>
    </h:form>
</p:dialog>

..当我的保存按钮被点击时,执行这段代码。

public class MyBean{
    public void save(ActionEvent event) {
        try{
            myEJB.addMember(newMember);
            //how to show message
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

添加成功后如何向用户显示对话框弹出消息。

我用这段代码试过了,但这没有出现,对话框被关闭了。

FacesMessage facesMessage = new FacesMessage("Successful add!");
FacesContext.getCurrentInstance().addMessage(null, facesMessage);

我在想这是一个 ajax 提交,所以一切都被清除了。

我想我必须在 oncomplete 期间执行一些代码,但我不知道该怎么做?

4

1 回答 1

8

您应该从您的 ajax 请求中更新消息标签。

假设您的页面上有这样的全局消息标签:

<h:messages id="msg"/>

由于它不在对话框的表单中,因此您需要在update属性中p:commandButton使用绝对 id 来处理它:

<p:commandButton value="Save"
                 actionListener="#{myBean.save}"
                 oncomplete="dlg1.hide()"
                 update=":msg"  />
于 2012-05-15T06:58:41.653 回答