我有 ap:menuitem 需要 (1) 单击时更新支持 bean 属性,然后 (2) 显示 ap:dialog。
这是我的设置:
<p:menuitem value="Show Dialog"
oncomplete="dialog_widget.show();"
update=":dialog"
actionListener="#{bean.setCurrentAction}">
</p:menuitem>
<p:dialog widgetVar="dialog_widget" id="dialog" dynamic="true">
<h:form>
<p:inputText value="#{bean.record.text} />
// the proper rendering of this dialog form depends on bean.currentAction
// being set during JSF Phase 4 Update Model Values
</p:dialog>
和支持bean:
public R getRecord() {
if (currentAction == null) {
return null;
}
return currentAction == NEW ? newRecord : selectedRecord;
}
问题是 actionListeners 和动作只在第 5 阶段执行,我需要在此之前设置 bean.currentAction 以便可以正确更新和呈现对话框。
** 我想要实现的一些背景知识:对话框表单用于创建新记录以及更新现有记录(添加和编辑对话框)。因此 bean 上的“currentAction”指示用户正在执行的操作。根据哪个动作,表单需要使用不同的模型对象(“newRecord”或“selectedRecord”)来拉取和保存表单数据。