Hi Sven,

the property name of the ApplicationSettings-object is misnamed, it should be:
  <bean id="settings" class="test.MySettings">
    <constructor-arg ref="application"/>
    <property name="defaultPageFactory" ref="pageFactory"/>
  </bean>

In general, Spring beans have to be bean-conform. So there is a workaround for 
using such setters that doesn't return the trivial void (have a look at 
TheServerSide.com: 
http://www.theserverside.com/articles/article.tss?l=SpringLoadedObserverPattern).

Try something like this (keep in mind that Spring beans are singletons by 
default):

<beans>
  <bean id="application" class="test.MyApplication">
    <property name="settings" ref="settings"/>
    <property name="sessionFactory" ref="sessionFactory"/>
   </bean>

  <bean id="settings" class="test.MySettings">
    <constructor-arg ref="application"/>
    <property name="pageFactory" ref="pageFactory"/>
  </bean>
        
  <bean id="pageFactory" class="test.MyPageFactory"/>

<bean id="registerPageFactory" 
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject"><ref local="settings"/></property>
    <property 
name="targetMethod"><value>setDefaultPageFactory</value></property>
    <property name="arguments"><ref bean="pageFactory"/></property>
</bean>

  <bean id="sessionFactory" class="test.MySessionFactory">
    <constructor-arg ref="application"/>
  </bean>
</beans>




Regards
  Martin




>>> [EMAIL PROTECTED] 04.10.05 10:57 >>>
Hello,

I'm using a custom IWebApplicationFactory to create a wicket application inside 
its own Spring application context:

<beans>
  <bean id="application" class="test.MyApplication">
    <property name="settings" ref="settings"/>
    <property name="sessionFactory" ref="sessionFactory"/>
   </bean>

  <bean id="settings" class="test.MySettings">
    <constructor-arg ref="application"/>
    <property name="pageFactory" ref="pageFactory"/>
  </bean>
        
  <bean id="pageFactory" class="test.MyPageFactory"/>

  <bean id="sessionFactory" class="test.MySessionFactory">
    <constructor-arg ref="application"/>
  </bean>
</beans>

I've added setSettings() to my application, so that MySettings could be 
injected into the application.

Now to my problem:
It seems that Spring does not like Wicket's 'chainable' setters because of 
their return type, e.g.

  public ApplicationSettings setDefaultPageFactory(IPageFactory 
defaultPageFactory)

A NotWritablePropertyException will be thrown because of the non-void return 
type.

After adding setPageFactory() I realized that I have to add a Java-Beans 
compliant setter for each property of ApplicationSettings, e.g.

  <property name="stripWicketTags" value="true"/>

I'm not sure who is to blame for this, Spring because it's so picky or Wicket 
with its baroque setter idiom (or perhaps me ;).

Does anybody have a nice solution to this?

Sven


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl 
_______________________________________________
Wicket-user mailing list
[email protected] 
https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to