Hey Martin,

thanks for the quick response.  It sounds quite good, but it is not working yet.

Since we use guice, I tried to use the WebApplication we have
configured already:

        final WicketTester wicketTester = new
WicketTester(WebApplication.get());
        wicketTester.startPage(pageClass,pageParameters);
        return wicketTester.getLastResponseAsString();

But I get following exception[1].

Some more basic conditions.
* A request is currently running.
* I need to get session information into the rendering, since the data
loading for the page contains authorization checks on the currently
logged in user.

Any suggestions?

Stefan




Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at 
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:177)
        ... 37 more
Caused by: java.lang.IllegalStateException: Application name can only
be set once.
        at org.apache.wicket.Application.setName(Application.java:846)
        at 
org.apache.wicket.util.tester.BaseWicketTester.<init>(BaseWicketTester.java:291)
        at 
org.apache.wicket.util.tester.BaseWicketTester.<init>(BaseWicketTester.java:241)
        at 
org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:192)
        at 
com.freiheit.tango.presentation.application.WicketUtils.renderPageWithWicketTester(WicketUtils.java:43)
        at 
com.freiheit.tango.presentation.dashboard.DashboardPage.<init>(DashboardPage.java:124)
        at 
com.freiheit.tango.presentation.dashboard.DashboardPage.<init>(DashboardPage.java:108)
        at 
com.freiheit.tango.presentation.dashboard.DashboardPage.<init>(DashboardPage.java:104)
        ... 42 more


2011/9/29 Martin Grigorov <[email protected]>:
> use WicketTester.startPage() and tester.getLastResponseAsString()
>
> On Thu, Sep 29, 2011 at 11:06 AM, Stefan Neumann
> <[email protected]> wrote:
>> Hey guys,
>>
>>  I need to render a page to a String or file. I have already read the
>> typical reference [1] [2] for this topic.
>>
>> The difference is, that I am using wicket 1.5 and there must be some
>> API changes so I could not use the given examples.
>>
>> Has someone an example? I tried my best to make the exampel compile
>> but i alwas get a NPE at
>> bufferedWebResponse.getText().toString()
>>
>> Appreciate your help in advance,
>>
>> Stefan
>>
>>
>> [1]
>> http://www.danwalmsley.com/2008/10/21/render-a-wicket-page-to-a-string-for-html-email/
>> [2]
>> https://gist.github.com/1152059
>> [3]
>>  public static String renderPage(final Class<? extends Page>
>> pageClass, final PageParameters pageParameters)
>>        {
>>            final WebApplication application = WebApplication.get();
>>            final ServletContext context =
>> application.getServletContext();  //fake a request/response cycle
>>            final MockHttpSession servletSession = new 
>> MockHttpSession(context);
>>            servletSession.setTemporary(true);
>>            final MockHttpServletRequest servletRequest = new
>> MockHttpServletRequest(application, servletSession, context);
>>            final MockHttpServletResponse servletResponse = new
>> MockHttpServletResponse(servletRequest);  //initialize request and
>> response
>>            servletRequest.initialize();
>>            servletResponse.initialize();
>>
>>            final ServletWebRequest webRequest = new
>> ServletWebRequest(servletRequest,"/");
>>            final WebResponse webResponse = new
>> ServletWebResponse(webRequest,servletResponse);
>>            final BufferedWebResponse bufferedWebResponse = new
>> BufferedWebResponse(webResponse);
>>            //webResponse.setAjax(true);
>>            final RequestCycle requestCycle = new RequestCycle(
>>                new RequestCycleContext(webRequest, webResponse,
>> application.getRootRequestMapper(,
>> application.getExceptionMapperProvider().get()));
>>
>>            //requestCycle.setRequestTarget(new
>> BookmarkablePageRequestTarget(pageClass, pageParameters));
>>            requestCycle.setResponsePage(pageClass, pageParameters);
>>
>>            try
>>            {
>>                final boolean handled = 
>> requestCycle.processRequestAndDetach();
>>
>>
>>                LOGGER.info("Response after request: " +
>> bufferedWebResponse.getText().toString());
>>
>>                if (! handled)
>>                {
>>                    LOGGER.error(">>>>>>>>>>>>>>>>>>>>>>> NOT HANDLED");
>>                    //requestCycle.set(new
>> ErrorCodeRequestHandler(HttpServletResponse.SC_NOT_FOUND));
>>                }
>>
>>                //requestCycle.detach();
>>            }
>>            finally
>>            {
>>                requestCycle.getResponse().close();
>>            }
>>
>>            return bufferedWebResponse.getText().toString();
>>        }
>>
>> --
>> Stefan Neumann
>> Dipl.-Ing.
>> freiheit.com technologies gmbh
>> Straßenbahnring 22 / 20251 Hamburg, Germany
>> fon +49 (0)40 / 890584-0
>> fax +49 (0)40 / 890584-20
>> HRB Hamburg 70814
>> 1CB2 BA3C 168F 0C2B 6005 FC5E 3EBA BCE2 1BF0 21D3
>> Geschäftsführer: Claudia Dietze, Stefan Richter, Jörg Kirchhof
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>



-- 
Stefan Neumann
Dipl.-Ing.
freiheit.com technologies gmbh
Straßenbahnring 22 / 20251 Hamburg, Germany
fon +49 (0)40 / 890584-0
fax +49 (0)40 / 890584-20
HRB Hamburg 70814
1CB2 BA3C 168F 0C2B 6005 FC5E 3EBA BCE2 1BF0 21D3
Geschäftsführer: Claudia Dietze, Stefan Richter, Jörg Kirchhof

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to