2011-08-08 42 views
1

我正在使用定義自己的自定義事件的第三方JSF 2.0組件(Primefaces 3.0 FileUpload)。在服務器端,處理程序的簽名如下所示:如何在處理JSF 2.0事件時獲取上下文Pojo

public void handleFileUpload(FileUploadEvent event) 

問題是,我的形式是動態生成的,可能有幾十個獨立的FileUpload控件它,我需要知道哪些文件上傳控件生成事件。

實際上,我不需要知道哪一個,我只需要ui中的「var」:repeat就會導致生成特定的FileUpload控件。使用普通的控制器,我可以很容易地只傳入我需要的變量,但這個第三方組件恰好使用事件處理機制而不是控制器,並且對如何使用JSF 2.0事件並不知情,我不知道只有在事件發生後才能進入POJO。

我看到該事件上有一個getComponent()方法,它告訴我UIComponent,但在周圍戳了一下後,我沒有看到任何簡單的方法來獲取上下文變量,甚至沒有辦法生成我自己的EL表達式來評估以獲取上下文變量。

所以這個問題歸結爲......只給出一個事件,我如何才能得到被點擊的特定組件的範圍內的上下文變量?

回答

1

想通了......我需要把這個第三方組件內部

<f:attribute name="myObject" value="#{myObject}"/> 

然後,它是在組件的服務器端的屬性地圖可供選擇:

final MyOjbect myObject = (MyObject) event.getComponent().getAttributes().get("myObject"); 
相關問題