假设我有多个 f:event 标签来处理同一类型的事件:
<f:event type="preRenderView" listener="#{myBean.action1()} />
<f:event type="preRenderView" listener="#{myBean.action2()} />
执行顺序有保证吗?
Edit:
为了澄清为什么我需要它们按特定顺序执行,这是我的用例:
myBean#action1 实际上是一个 setter
myBean#action2 是对 action1 设置的字段进行操作的方法
在我看来,这个顺序是不可靠的,这就是为什么我简单地将它们作为EL expressions
在我的facelet里面是这样的:
<p:ouputPanel>
#{myBean.action1()}
#{myBean.action2()}
</p:ouputPanel>
The spec似乎没有在任何地方明确说明这一点。
The Application#publishEvent()API 提到它们是作为List这是本质上有序的。这俩Mojarra and MyFaces实现通过将它们存储在一个中来确认这一点CopyOnWriteArrayList
and ArrayList
分别。
因此,从逻辑上讲,基于 API 和两个实现,如果将它们添加到同一父 UI 组件,它们确实会按顺序执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)