2012-04-13 89 views
4

假設我有多個F:事件代碼來處理同類事件的:JSF F:事件的執行順序

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

保證執行的順序?

編輯:
解釋,爲什麼我需要他們在特定的順序執行,這是我的使用情況:

爲myBean#動作1實際上是一個二傳手

爲myBean#1動作是一個方法即由動作1

在我看來設置字段操作,順序是不可靠的,這就是爲什麼我只是把他們當成EL expressions我的facelet裏是這樣的:

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

不知道,但是如果你只放置一個只有你從action1中調用動作2的f:event,你總能保證100%。:) – Daniel 2012-04-13 19:54:42

+0

不能這樣做。我需要將不同的參數傳遞給這些'action'方法。並且這些方法在邏輯上不相關。我知道還有其他的選擇,但我只是好奇我是否可以依靠訂單。 – jFrenetic 2012-04-13 20:01:15

回答

4

spec似乎沒有明確指出,在任何地方。

Application#publishEvent() API提到它們被獲取和處理爲List這本質上是有序的。 MojarraMyFaces實現都通過將它們分別存儲在CopyOnWriteArrayListArrayList中來進行確認。

因此,邏輯上基於API和兩種實現,如果添加到相同的父UI組件,它們確實按順序執行。

+0

謝謝!您的意見像往常一樣受到高度讚賞;) – jFrenetic 2012-04-13 20:41:56

+0

不客氣。 – BalusC 2012-04-13 20:47:51