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]