这是交易:我有一个由托管 bean 中的列表填充的数据表。我想要的是用所选对象的信息打开一个简单的 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 在操作之前执行,从而设置我的对象。
更新
这里的另一个主题有助于回答这个问题。 在 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>