Thank you, now it works.

On Tue, Nov 10, 2009 at 8:29 PM, Pieter Degraeuwe <
pieter.degrae...@systemworks.be> wrote:

> You are getting this exception from a unittest. When you use WicketTester
> in
> combination with Spring injection, you have to tweak it a bit:
> You have to add the spring applicationContext to the mock ServletContext:
>
> Soe here a expect that you already did construct the spring
> applicationContext. Creating the WicketTester:
>
>            tester = new WicketTester(createWebApplication()) {
>                @Override
>                public ServletContext newServletContext(String path) {
>                    MockServletContext servletContext = (MockServletContext)
> super.newServletContext(path);
>
>
> servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
> applicationContext);
>                    return servletContext;
>                }
>            };
>            tester.getWicketSession().setLocale(getLocale());
>            new SpringComponentInjector(tester.getApplication(),
> applicationContext);
>            testerHolder = tester;
>
>
> That should do it:
>
> 2009/11/10 Владимир Михайленко <vladimir.web...@gmail.com>
>
> > Hello.
> >
> > I just created wicket quickstart project via maven and want add Spring DI
> > to
> > Wicket. So I added to WicketApplication:
> >
> >    @Override
> >    protected void init()
> >    {
> >        super.init();
> >            addComponentInstantiationListener(new
> > SpringComponentInjector(this));
> >    }
> >
> > In web.xml I added:
> >
> >     <context-param>
> >          <param-name>contextConfigLocation</param-name>
> >        <param-value>/WEB-INF/applicationContext.xml</param-value>
> >     </context-param>
> >
> >    <filter>
> >        <filter-name>wicket.jobmd</filter-name>
> >
> > <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
> >         <init-param>
> >            <param-name>applicationFactoryClassName</param-name>
> >
> >
> >
> <param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
> >        </init-param>
> >        <init-param>
> >            <param-name>applicationBean</param-name>
> >            <param-value>wicketApplication</param-value>
> >        </init-param>
> >     </filter>
> >
> >     <listener>
> >
> >
> >
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
> >     </listener>
> >
> > In pom.xml:
> >
> >        <dependency>
> >            <groupId>org.apache.wicket</groupId>
> >            <artifactId>wicket-spring</artifactId>
> >            <version>${wicket.version}</version>
> >        </dependency>
> >        <dependency>
> >            <groupId>org.springframework</groupId>
> >            <artifactId>spring</artifactId>
> >            <version>2.5.6</version>
> >        </dependency>
> >
> > In applicationContext.xml:
> >
> > <bean id="wicketApplication"
> > class="com.mihailenco.WicketApplication"></bean>
> >
> > Then when I build project in latest stable NetBeans I get this error in
> > console:
> >
> > Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.579 sec
> > <<< FAILURE!
> > testRenderMyPage(com.mihailenco.TestHomePage)  Time elapsed: 1.435 sec
>  <<<
> > ERROR!
> > java.lang.IllegalStateException: No WebApplicationContext found: no
> > ContextLoaderListener registered?
> >        at
> >
> >
> org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:70)
> >        at
> >
> >
> org.apache.wicket.spring.injection.annot.SpringComponentInjector.<init>(SpringComponentInjector.java:72)
> >        at
> com.mihailenco.WicketApplication.init(WicketApplication.java:24)
> >        at
> > org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:708)
> >        at
> >
> >
> org.apache.wicket.protocol.http.MockWebApplication.<init>(MockWebApplication.java:168)
> >        at
> >
> >
> org.apache.wicket.util.tester.BaseWicketTester.<init>(BaseWicketTester.java:217)
> >        at
> > org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:317)
> >        at
> > org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:300)
> >        at com.mihailenco.TestHomePage.setUp(TestHomePage.java:16)
> >        at junit.framework.TestCase.runBare(TestCase.java:128)
> >        at junit.framework.TestResult$1.protect(TestResult.java:106)
> >        at junit.framework.TestResult.runProtected(TestResult.java:124)
> >        at junit.framework.TestResult.run(TestResult.java:109)
> >        at junit.framework.TestCase.run(TestCase.java:120)
> >        at junit.framework.TestSuite.runTest(TestSuite.java:230)
> >        at junit.framework.TestSuite.run(TestSuite.java:225)
> >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >        at
> >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >        at
> >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >        at java.lang.reflect.Method.invoke(Method.java:597)
> >        at
> >
> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
> >        at
> >
> >
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
> >        at
> >
> >
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
> >        at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
> >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >        at
> >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >        at
> >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >        at java.lang.reflect.Method.invoke(Method.java:597)
> >        at
> >
> >
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
> >        at
> >
> >
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
> >
> > Did I missed something? Thank you.
> >
>
>
>
> --
> Pieter Degraeuwe
> Systemworks bvba
> Belgiëlaan 61
> 9070 Destelbergen
> GSM: +32 (0)485/68.60.85
> Email: pieter.degrae...@systemworks.be
> visit us at http://www.systemworks.be
>

Reply via email to