Mail Archive Home | exoplatform List | July 2008 Index
| <-- Date Index --> | <-- Thread Index --> |
Hello all,I've got a problem. I wanted to attach an event and its listener to the BannerPortlet of the portal. I thus modified the configuration file to get this one:
<webui-configuration> <ui-component-config id="UIBannerPortlet"> <type>org.exoplatform.portal.webui.application.UIGroovyPortlet</type><lifecycle>org.exoplatform.groovy.webui.component.lifecycle.UIGroovyPortletLifecycle</lifecycle>
<events>
<event>
<event-name>show.account.event</event-name>
<listener>org.mycompany.ShowAccountSettingsListener</listener>
</event>
</events>
</ui-component-config>
<application>
<ui-component-root>org.exoplatform.portal.webui.application.UIGroovyPortlet</ui-component-root>
<state-manager>org.exoplatform.webui.application.portlet.ParentAppStateManager</state-manager>
</application> </webui-configuration>My aims was to modify the associated groovy template to create link on the event. Something like:
String myEvent = uicomponent.event( "show.account.event" ); <a href="$myEvent">blabbla</a> But it doesn't work. I get: myEvent=??config??. From what I have seen:1) the ConfigurationManager of the portlet is correctly fed with the objects declared in the configuration file. Especially, its map "configs_" has a Component object instanciated with my event and its listener but its associated key is "org.exoplatform.portal.webui.application.UIGroovyPortlet:UIBannerPortlet". (seen in org.exoplatform.webui.application.WebuiApplication.onInit()) From what I understood, this Component object that holds my event and its listener should be then associated to my portlet (meaning my webui root component i.e. UIGroovyPortlet) 2) but when org.exoplatform.portal.application.PortalStateManager is creating the uiroot component (UIGroovyPortlet), it calls:
restoreUIRootComponent(WebuiRequestContext)-> org.exoplatform.webui.application.WebuiApplication.createUIComponent(org.exoplatform.portal.webui.application.UIGroovyPortlet.class, null, null, requestContext) -> org.exoplatform.webui.application.ConfigurationManager.getComponentConfig(org.exoplatform.portal.webui.application.UIGroovyPortlet.class, null)
at this stage, the latter method is looking for a key "org.exoplatform.portal.webui.application.UIGroovyPortlet" to the ConfigurationManager. Since not such key exists (indeed the original key was "org.exoplatform.portal.webui.application.UIGroovyPortlet:UIBannerPortlet"), no Component is returned and thus my portlet gets a new brand default one. As matter of fact, I've lost my event and its listener... OK, my explanation seems a bit tedious, but add breakpoints to the above methods, and you will understand straight (if not yet :-) ). I tried to remove the id="UIBannerPortlet" as workaround but I lost the banner itself... worse then... :-(
I would appreciate any feedback about best practices to attach event to webuicomponent.
Thanks in advance, Cédric.
| <-- Date Index --> | <-- Thread Index --> |
Powered by MHonArc.
Copyright © 2006-2007, OW2 Consortium | contact | webmaster.