1

ユーザーガイドにはRequestContext、Ajaxと非Ajaxの両方の呼び出しで機能すると記載されています。ただし、ユーザーガイドのすべての例はAj​​axを使用しており、私の場合、Ajax以外の呼び出しでは機能しません。

以下はテストページです。

<?xml version='1.0' encoding='UTF-8' ?>
<!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 page</title>
    </h:head>
    <h:body>
        <h:form >  

            <p:commandButton ajax="false" value="Non-Ajax" actionListener="#{mrBean.show}" />

            <p:commandButton value="Ajax" actionListener="#{mrBean.show}" />

        </h:form>

        <p:dialog modal="true" id="statusDialog" widgetVar="statusDlg" closable="false" >
            <h:outputText value="Helllooo" />
        </p:dialog>
    </h:body>
</html> 

そして、これはマネージドBeanです。

@ManagedBean
@RequestScoped
public class MrBean {

    public void show() {
        System.out.println("SHOW DIALOG");
        RequestContext context = RequestContext.getCurrentInstance();
        context.execute("statusDlg.show();");
    }

}

ボタンをクリックするAjaxと、ダイアログが正しく表示されます。しかし、Non-Ajaxボタンは何もしませんでした。どちらの場合も、SHOW DIALOGメッセージはコンソールに出力されました。

この問題に取り組む方法を教えていただければ幸いです:)。

よろしくお願いします、

ジェームス・トラン

4

1 に答える 1

2

私はあなたを失望RequestContextさせなければなりません、しかし非AJAXリクエストでは利用可能ですが、有用な関数だけがisAjaxRequest()ブール値の戻り値を持っています。ドキュメントとAPIリファレンスでは、他のすべてのメソッドについて、それらがAJAXリクエスト用であると通知されていることがわかります。メソッドのexecute()場合:

現在のajaxリクエストが完了した後、JavaScriptを実行します。

以前RequestContextはまったく利用できませんでしたが、現在はAJAX以外のリクエストで将来使用できるようになっています。さらに、この問題を参照してください

于 2013-02-24T17:41:30.257 に答える