0

重複の可能性:
Primefaces 確認ダイアログ コンポーネントを使用したマネージド Bean からのメッセージの表示

設定: jsf 2 および primefaces。

私の xhtml ページには、グラフィックを含むキャンバスが含まれています。ユーザーはグラフィックの領域をクリックできます。これは、この領域に固有の文字列を返す js 関数を呼び出します。これを「textFromClickedRegion」と呼びましょう。この文字列は、inputHidden フィールドに格納されます。

javascript の次の行は、inputhidden フィールドを含むフォームを Bean に送信し、confirmDialog (primefaces 内) を開きます。このヘッダーは、Bean からの文字列によってカスタマイズする必要があります。

問題: ダイアログは開きますが、文字列は Bean の値を取得しません (これは単なる textFromClickedRegion です)。

js スクリプト:

textFromClickedRegion = region.getText();
document.getElementById('formId:nameClicked').value = textFromClickedRegion;
document.getElementById('formId:submitNameClicked').click();

xhtml:

<h:form id="formId">
    <h:inputHidden id="nameClicked" value="#{reportBean.nameClicked}"/>
    <p:commandButton id="submitNameClicked" type="button" process="@form" onclick="cd.show();"/>
</h:form>

<p:confirmDialog id ="dialogBox" message="#{reportBean.nameClicked}, are you sure about destroying the world?"
                         header="Initiating destroy process" severity="alert"
                         widgetVar="cd">
    <p:commandButton value="Yes Sure" oncomplete="confirmation.hide();"/>
    <p:commandButton value="Not Yet" onclick="confirmation.hide();" type="button" />
</p:confirmDialog>

js関数によって返された文字列をconfirmDialogに表示させるにはどうすればよいですか?

[注: 上記は、Primefaces のマニュアルと、クライアントとサーバーの間の通信と jsf / js に関するBalusC による投稿を組み合わせたものであることがわかります - 彼に感謝します]。

4

1 に答える 1

0

これが実際の例です:

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class Bean {

    private String value;

    @PostConstruct
    public void postConstruct() {
        value = "SERVER SIDE VALUE";
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}
<h:head>
    <script>
        function updateElementValue(id,value){
            document.getElementById(id).value = value;
        }
    </script>
</h:head>

<h:body>

    <h:form id="form" prependId="false">

        <p:commandButton value="UPDATE CLIENT SIDE VALUE OF INPUT-HIDDEN"
                         onclick="updateElementValue('nameInputHiddenId',
                                                     'CLIENT SIDE VALUE');
                                                      return false;"/>
        <p:commandButton value="UPDATE SERVER SIDE VALUE OF INPUT-HIDDEN" 
                         process="@form" 
                         update="dialogId" 
                         oncomplete="dialogWidgetVar.show();" />

        <h:inputHidden id="nameInputHiddenId" value="#{bean.value}" />

        <p:dialog id="dialogId" widgetVar="dialogWidgetVar">
            <h:outputText id="nameOutputTextId" value="#{bean.value}" />
            <p:commandButton value="Yes" onclick="dialogWidgetVar.hide();" />
            <p:commandButton value="No" onclick="dialogWidgetVar.hide();"/>
        </p:dialog>

    </h:form>

</h:body>
于 2012-10-08T13:27:27.080 に答える