0

ここに取り引きがあります: マネージド Bean のリストによって入力された dataTable があります。私が望むのは、選択したオブジェクトの情報を含む単純なプライムフェイス ダイアログを開くことです。setPropertyActionListener と onclick イベントを使用してそうしようとしています。

                <p:commandButton id="basic" value="Resumo" onclick="dlg1.show();"
                                 type="button" 

                                 >
                    <f:setPropertyActionListener target="#{consultaArtigoBean.artigoSelecionado}"
                                                 value="#{artigo}" />

                </p:commandButton> 

そして、ダイアログ

        <p:dialog id="basicDialog" header="Resumo - #{consultaArtigoBean.artigoSelecionado.titulo}" 
                  widgetVar="dlg1" 
                  dynamic="true">
            #{consultaArtigoBean.artigoSelecionado.resumo}
        </p:dialog>

問題は、setPropertyActionListener が有効になる前にアクションが実行されることです。そのため、オブジェクトがまったくない状態でダイアログがポップアップします。

アクションの前に setProperty が実行され、オブジェクトが設定されるようにするにはどうすればよいですか。

アップデート

ここの別のトピックがこれに答えるのに役立ちました。 onclick イベントの後に h:outputLink から JSF に値を渡す

結果は次のとおりです。

<p:commandLink id="basic" value="Resumo"
                               oncomplete="dlg1.show();"
                               update="@form">
                    <f:setPropertyActionListener target="#{consultaArtigoBean.artigoSelecionado}"
                                                 value="#{artigo}" />

                </p:commandLink>

とダイアログ

<p:dialog id="basicDialog" header="Resumo - #{consultaArtigoBean.artigoSelecionado.titulo}" 
                  widgetVar="dlg1" 
                  dynamic="true">
            #{consultaArtigoBean.artigoSelecionado.resumo}
        </p:dialog>
4

1 に答える 1

0

oncompleteajax ポストバック後に発生する属性を使用します。update属性を介してダイアログをさらに更新します。

onclick イベントの前に p:commandLink アクションを実行しますか?

于 2013-05-30T21:20:19.407 に答える