我有一個複合元件,其中,我通過在一個任意定義的屬性:JSF 2 - 傳遞參數進行的跨系統事件
<x:mycomp x="..."/>
x
被在CC的接口定義定義爲這樣。的mycomp
實現內部我有一個事件偵聽器:
<composite:implementation>
<f:event type="preRenderComponent" listener="#{mycontroller.init}" />
</composite:implementation>
現在我想這樣做在後端的東西與此arbitary參數x
。如何通過系統事件傳遞它,如使用f:attribute
標記?或者從事件中獲取源組件並通過其內部進行拖網? (說到哪裏在UIComponent中存儲了這些屬性 - 我無法找到它們,而不是屬性)。
如果不可能,這會嚴重限制系統事件的實用性。如果將組件放置在ui:repeat
內,則偵聽器將多次觸發,以便在事件觸發期間穿過樹。
只有我能想到的事情就是在init編碼直接進入渲染:
<composite:implementation>
#{mycontroller.init(cc.attrs.x)} //returns empty string
<!--f:event type="preRenderComponent" listener="#{mycontroller.init}" /-->
</composite:implementation>
但我認爲多數民衆贊成預渲染系統事件將是。
對不起,我已經閱讀了您的問題最多3次,但我似乎無法過濾/理解潛在的功能需求。你能否更新你的問題來詳細闡述一下? – BalusC 2010-08-24 16:03:25
哇,快! 我傳遞一個屬性到一個複合組件。假定在渲染前必須以某種方式進行裝飾。系統事件是否可以獲得該屬性「x」以便在服務器上使用它? 與您在網站中介紹的有關通過actionlistener傳遞參數相同的事情(如果您是http://balusc.blogspot.com/2006/06/communication-in-jsf.html中的同一人)除了這次它是一個eventlistener,而不是一個actionlistener。 本質上,我正在尋找一種方法來初始化傳遞參數之前就在渲染。 – 2010-08-24 16:21:45