ユーザーガイドにはRequestContext
、Ajaxと非Ajaxの両方の呼び出しで機能すると記載されています。ただし、ユーザーガイドのすべての例はAjaxを使用しており、私の場合、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
メッセージはコンソールに出力されました。
この問題に取り組む方法を教えていただければ幸いです:)。
よろしくお願いします、
ジェームス・トラン