我需要在显示<p:dialog>
之前调用bean方法。目前我有以下内容:
<p:remoteCommand name="updateDialog" action="#{someBean.init()}"
update="dialog-table" global="true" />
<p:dialog id="someDialog" modal="true" dynamic="false" onShow="updateDialog()">
<ui:include src="some-dialog-content.xhtml" />
</p:dialog>
还不错,它甚至可以工作,但仍然存在问题。此对话框通过从Java代码调用RequestContext
来显示,还有一个全局ajaxStatus
元素,在发送ajax调用时显示带有微调器的状态对话框,并在此调用完成时隐藏它。但是,someBean.init()
可能还需要一些时间才能完成,所以我希望在init()
正在进行时也显示此状态对话框(这就是我将global
设置为{{1}的原因} - 据我所知,它应该触发true
,因此,触发状态对话框)。但是,这不起作用。 ajaxStatus
通话期间不会显示状态对话框。
据我所知,这种情况正在发生,因为在上一次请求之前调用了remove命令(导致someBean.init()
被更新并显示RequestContext
)调用了完整事件。但是,在发送someDialog
请求之后,将调用此完整事件,状态对话框将在someBean.init()
完成之前消失。
我能找到的唯一解决方法是第二个状态对话框,从主要对话框中复制:
someBean.init()
这就像我需要的那样,但它非常难看。有没有办法以更清洁的方式做我想要的事情?
我正在使用JSF 2.1和Primefaces 3.4.1。
答案 0 :(得分:0)
在Requestcontext
之前调用该方法