У меня есть составной компонент, где я передаю произвольно определенный атрибут:
<x:mycomp x="..."/>
x
определяется как таковое в определении интерфейса cc.Внутри реализации mycomp
у меня есть прослушиватель событий:
<composite:implementation>
<f:event type="preRenderComponent" listener="#{mycontroller.init}" />
</composite:implementation>
Теперь я хотел бы сделать что-то на сервере с этим произвольным параметром x
.как передать его через системное событие, как с тегом f:attribute
?или получение исходного компонента из события и просмотр его внутренних элементов?(Говоря о том, где в UIComponent эти атрибуты хранятся в любом случае - я не смог их найти, во всяком случае, в атрибутах.)Если вы поместите компонент в ui:repeat
, слушатель будет запущен несколько раз, поэтому он будет проходить по дереву во время запуска события.
Единственное, о чем я могу думать, это закодировать init непосредственно в рендер:1016 *
<composite:implementation>
#{mycontroller.init(cc.attrs.x)} //returns empty string
<!--f:event type="preRenderComponent" listener="#{mycontroller.init}" /-->
</composite:implementation>
Но я подумал, что для этого и будет системное событие prerender.