4

同じ種類のイベントを処理するために複数のf:eventタグがあるとします。

<f:event type="preRenderView" listener="#{myBean.action1()} />
<f:event type="preRenderView" listener="#{myBean.action2()} />

実行順序は保証されていますか?

編集:
特定の順序で実行する必要がある理由を明確にするために、次のユースケースを使用します。

myBean#action1は実際にはセッターです

myBean#action2は、action1によって設定されたフィールドを操作するメソッドです。

私の意見では、順序は信頼できません。そのため、次のEL expressionsようにフェイスレット内に 配置します。

<p:ouputPanel>
  #{myBean.action1()}
  #{myBean.action2()}
</p:ouputPanel>
4

1 に答える 1

4

仕様はどこにもそれを明示的に述べていないようです。

Application#publishEvent()APIは、それらがList本質的に順序付けられたものとして取得および処理されることを示しています。MojarraMyFacesの両方の実装はCopyOnWriteArrayList、それぞれとに格納することでこれを確認しArrayListます。

したがって、論理的にAPIと両方の実装に基づいて、同じ親UIコンポーネントに追加された場合、それらは実際に順番に実行されます。

于 2012-04-13T20:07:52.100 に答える