Hey Martin,

I get now a CastException in:

Root cause:

java.lang.ClassCastException:
org.apache.wicket.response.StringResponse cannot be cast to
org.apache.wicket.request.http.WebResponse
     at 
org.apache.wicket.request.handler.render.WebPageRenderer.redirectTo(WebPageRenderer.java:134)
     at 
org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:214)
     at 
com.freiheit.tango.presentation.application.WicketUtils.renderPageNew(WicketUtils.java:54)

the corresponing line is:

        final WebApplication application = WebApplication.get();

        final RenderPageRequestHandler handler = new
RenderPageRequestHandler(new PageProvider(pageClass, pageParameters));
        final PageRenderer pageRenderer =
application.getPageRendererProvider().get(handler);

        final Response oldResponse = requestCycle.getResponse();
        final StringResponse newResponse = new StringResponse();
        requestCycle.setResponse(newResponse);

 -->       pageRenderer.respond(requestCycle); <---
        requestCycle.setResponse(oldResponse);

        return newResponse.toString();

But seems to get closer ;-)

I can add the ticket when my case is running.

Greetings
Stefan

2011/9/29 Martin Grigorov <[email protected]>:
> I guess I need to add an example of this in wicket-examples ...
> Please create a ticket to not forget it.
>
> Here is how it should work:
>
> IRequestHandler handler = new RenderPageRequestHandler(Page.class, 
> parameters);
> PageReneder renderer = application.getgetPageRendererProvider().get(handler);
>
> oldResponse = requestCycle.getResponse();
> StringResponse newResponse = new StringResponse();
> requestCycle.setResponse(newResponse);
>
> renderer.respond(requestCycle);
> requestCycle.setResponse(oldResponse);
>
> pageAsText = newResponse.toString();
>
> On Thu, Sep 29, 2011 at 12:09 PM, Stefan Neumann
> <[email protected]> wrote:
>> 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]
>>
>>
>
>
>
> --
> 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