【发布时间】:2014-05-09 09:02:14
【问题描述】:
我正在使用 primefaces 5.0,我遇到了这种情况:
<composite:implementation>
<p:dialog id="confirmDialog#{cc.attrs.someParam}"
rendered="#{cc.attrs.nextState.warnRequired}" severity="alert" resizable="false" modal="#{cc.attrs.modal}"
widgetVar="confirmation#{cc.attrs.someParam}">
<p:commandButton value="#{msg[cc.attrs.nextState.buttonKey]}" icon="#{nextStatus.icon}"
action="#{someActionCalled}"
update="#{cc.attrs.update}" process="#{cc.attrs.process}"
oncomplete="if (!args.validationFailed) { PF('confirmation#{cc.attrs.someParam}').hide(); }">
</p:commandButton>
<p:commandButton id="decline" value="#{msg['action.cancel']}" icon="ui-icon ui-icon-cancel"
onclick="PF('confirmation#{cc.attrs.someParam}').hide()" />
</p:dialog>
</composite:implementation>
当我点击“拒绝”/取消按钮时,confirmDialog 关闭/隐藏。没关系。
显然确认#{cc.attrs.someParam} 可以找到 widgetVar 并关闭此对话框。
但是,当我单击第一个按钮进行确认并在 back bean 中采取一些操作时,我得到:
Widget for var 'confirmationSomeParam' not available!
primef...mefaces (line 1)
detailed error: TypeError: PF(...) is null
{cc.attrs.someParam}
被传递到组件中。它的评估干净和值在那里(显然是因为第二个按钮可以关闭对话框。
所以很奇怪第一个按钮找不到这个对话框 widgetVar 而第二个按钮可以吗?
【问题讨论】:
标签: ajax primefaces