Martin,
is than any different to your previous mail (a couple of minutes ago),
or was it just a mistake?
Juergen
On Mon, 10 Jan 2005 13:59:44 +0100, Martin Fey <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I had a look at the Spring integration approaches of Wicket. It would
> be nice, if the Spring ApplicationContext is not only available from a
> custom subclass of Wickets HttpApplication as proposed so far. The
> adoption of your framework would be higher with a good and more
> transparent Spring framework integration.
> So I want to share my considerations:
> - Wicket pages a Spring managed beans
> => I think this is problematic by now because most often the
> default constructor of a Wicket page isn't used by the Wicket framework,
> but one of the other constructors (e.g. the one passing PageParameters).
> For Spring management the default constructor would be needed, as I can
> see so far.
>
> - Automatic injection of the ApplicationContext in a Wicket page, so
> that I don't have to query for the ApplicationContext:
> => I tried it like this:
> 1.) A Wicket page interested in the ApplicationContext implements
> the org.springframework.context.ApplicationContextAware interface
> 2.) Provide the subclass SpringPageFactory:
>
> public class SpringPageFactory extends PageFactory implements
> ApplicationContextAware {
>
> private ApplicationContext springContext = null;
>
> public ApplicationContext getSpringContext() {
> return springContext;
> }
>
> public void setSpringContext(ApplicationContext springContext) {
> this.springContext = springContext;
> }
>
> public void setApplicationContext(ApplicationContext
> applicationContext) {
> this.springContext = applicationContext;
> }
>
> /**
> * Constructor
> *
> * @param application The application object
> */
> public SpringPageFactory(final IApplication application) {
> super(application);
> }
>
> protected Page newPage(final Constructor constructor, final Object
> parameter) {
> Page newPage = super.newPage(constructor, parameter);
> Class[] interfaces = newPage.getClass().getInterfaces();
> if( interfaces != null ) {
> for( int i=0; i<interfaces.length; i++ ) {
> if( interfaces[i] == ApplicationContextAware.class ) {
> ((ApplicationContextAware)
> newPage).setApplicationContext(springContext);
> }
> }
> }
> return newPage;
> }
> }
>
> 3.) Configure the wiring:
> <bean id="wicketController"
> class="wicket.examples.springframework.SpringApplicationController">
> <property name="application"><ref
> local="wicketApp"/></property>
> </bean>
>
> <bean id="wicketApp" class="WicketApp">
> <property name="settings"><ref
> local="wicketSettings"/></property>
> </bean>
>
> <bean id="wicketSettings" class="wicket.ApplicationSettings">
> <constructor-arg><ref local="wicketApp"/></constructor-arg>
> <property name="pageFactory"><ref
> local="pageFactory"/></property>
> </bean>
> <bean id="pageFactory" class="de.bluvo.wicket.SpringPageFactory">
> <constructor-arg><ref local="wicketApp"/></constructor-arg>
> </bean>
>
> The disadvantage of this approach is, that I cannot access the
> ApplicationContext in the constructor without querying for it, because
> the ApplicationContext will first be injected after the constructor is
> called.
>
> Martin
>
> -------------------------------------------------------
> The SF.Net email is sponsored by: Beat the post-holiday blues
> Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
> It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user