1

GlassfishとEclipseを使用してPrimefaces 3を試しています。

ユーザーの詳細を作成または入力するときに、Primefaces Dialog を利用したいと考えていました。たとえば、あるページに、クリックするとこのダイアログが表示される [作成] ボタンがあるとします。

<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"/>

ダイアログのフォーム内にないため、絶対 ID を使用して のupdate属性でアドレス指定する必要があります。p:commandButton

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