通过f:setPropertyActionListener设置属性的getter不在primefaces对话框中调用

时间:2012-03-15 19:43:30

标签: jsf primefaces

我有一个按钮,它将属性设置为要在Primefaces对话框中使用的辅助bean。

p:commandButton value="Options" onclick="optionsDialog.show();">
`<f:setPropertyActionListener value="#{item}" target="#{bean.tempItem}" />
</p:commandButton>

我可以看到在这里调用setter。

<p:dialog header="Options" widgetVar="OptionsDialog" dynamic="true" modal="true"
width="400" height="250">
<h:outputText value="#{bean.tempItem.value}"/> 
</p:dialog>

这里从未调用过getter。

1 个答案:

答案 0 :(得分:0)

这是因为对话框的内容在显示之前没有更新。您需要通过命令按钮的update属性更新它。在那里引用对话框的(相对)客户端ID。您还需要将onclick替换为oncomplete,因为onclick在执行操作之前触发并且oncomplete之后触发 >行动已经完成。

<p:commandButton ... update="dialogId" oncomplete="optionsDialog.show();">

...

<p:dialog id="dialogId" ...>

顺便说一下,对话框小部件名称中还有一个小写/大写错字。但这会导致对话框根本不显示,这是一个不同的问题。