我正在为我的 Web UI 项目使用 PrimeFaces UI 库。
我有一个manage_watchfolder.xhtml
有按钮的页面,这个按钮会启动一个对话框:
<p:commandButton value="Add" oncomplete="dlgEditWF.show()" update=":editWFForm">
<f:param value="#{item.value.ID}" name="editId"/>
<h:graphicImage value="./edit.png" />
</p:commandLink>
在同一个文件中,我dlgEditWF
包含了edit_watchfolder.xhtml
:
<p:dialog id="editDialog" widgetVar="dlgEditWF" dynamic="true">
<ui:include src="edit/edit_watchfolder.xhtml"/>
</p:dialog>
我dynamic=="true"
用来防止edit_watchfolder.xhtml
在单击按钮之前被加载。
editWFForm
是 中的一种形式edit_watchfolder.xhtml
。
问题是当我第一次启动对话框时,edit_watchfolder.xhtml
支持 bean(请求范围)被创建了两次。第一次传递的值editId
(见上面的代码)是好的,但第二次它不存在,所以支持 bean 得到错误的值。
在我返回(OK
或Cancel
按钮)到父页面并再次启动对话框后,问题就消失了,一切正常。问题似乎只是第一次启动。
为什么第一次启动对话框时会创建两次支持 bean?