我有一个按钮,它将属性设置为要在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。
答案 0 :(得分:0)
这是因为对话框的内容在显示之前没有更新。您需要通过命令按钮的update
属性更新它。在那里引用对话框的(相对)客户端ID。您还需要将onclick
替换为oncomplete
,因为onclick
在执行操作之前触发并且oncomplete
在之后触发 >行动已经完成。
<p:commandButton ... update="dialogId" oncomplete="optionsDialog.show();">
...
<p:dialog id="dialogId" ...>
顺便说一下,对话框小部件名称中还有一个小写/大写错字。但这会导致对话框根本不显示,这是一个不同的问题。