2

具体的には、ajaxステートメント内でjavascriptを呼び出すことができるかどうか疑問に思っていました。私は、以下を機能させようとしています。

        <p:commandLink id="saveButton" value="Save" >
            <p:ajax event="click" actionListener="#{bean.saveButtonPressed()}" />
            <p:ajax event="click" actionListener="if(#{cbean.showSaveOverlay}){saveOverlay.show();}" />
        </p:commandLink>

そして、showSaveOverlyはsaveButtonPressed内に設定されます。

私がこれをどのように行うかについて何か考えはありますか?

4

1 に答える 1

12

PrimeFacesが提供RequestContextするAPIを使用します。

まず、ajaxリスナーを正規化します。

<p:ajax event="click" listener="#{cbean.showSaveOverlay}" />

RequestContext#getScriptsToExecute()次に、それに応じてアクションリスナーメソッドにスクリプトを追加します。

public void showSaveOverlay() {
    if (...) {
        RequestContext.getCurrentInstance().getScriptsToExecute().add("saveOverlay.show()");
    }
}

PrimeFaces 7.0をまだ使用していない場合は、RequestContext#execute()代わりに次を使用してください。

public void showSaveOverlay() {
    if (...) {
        RequestContext.getCurrentInstance().execute("saveOverlay.show()");
    }
}
于 2012-04-18T02:25:32.427 に答える