如何在javascript onclick事件之前执行JSF setPropertyActionListener

时间:2013-05-30 21:01:00

标签: jsf-2 primefaces

这是交易:我有一个由托管bean中的列表填充的dataTable。我想要的是打开一个简单的primefaces对话框与所选对象的信息,我试图通过使用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在操作之前执行,从而设置我的对象。

更新

这里的另一个主题有助于回答这个问题。 Pass a value from h:outputLink to JSF after onclick event

结果是:

<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>

1 个答案:

答案 0 :(得分:0)

使用在{ajax回发后将被触发的oncomplete属性。 通过update属性进一步更新对话框。

Execute p:commandLink action before onclick event?