这是交易:我有一个由托管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>
答案 0 :(得分:0)
使用在{ajax回发后将被触发的oncomplete
属性。
通过update
属性进一步更新对话框。