Perfect. It works. Even though I don't need it, I just have a hint for all, who want to use it as well, It seems not to work in a constructor of a page.
I created the issue for the wicket-examples: https://issues.apache.org/jira/browse/WICKET-4095 You will find a working code snipplet as well. thanks a lot! Stefan 2011/9/29 Martin Grigorov <[email protected]>: > Use > org.apache.wicket.request.handler.RenderPageRequestHandler.RenderPageRequestHandler(IPageProvider, > RedirectPolicy) > with > org.apache.wicket.request.handler.RenderPageRequestHandler.RedirectPolicy.NEVER_REDIRECT > > On Thu, Sep 29, 2011 at 2:01 PM, Stefan Neumann > <[email protected]> wrote: >> Hey, >> >> I tried to use a MockWebRespone: >> >> // final StringResponse newResponse = new StringResponse(); >> final MockWebResponse mockWebResponse = new MockWebResponse(); >> requestCycle.setResponse(mockWebResponse); >> pageRenderer.respond(requestCycle); >> requestCycle.setResponse(oldResponse); >> >> return mockWebResponse.getTextResponse().toString(); >> >> But the getTextRespone() is null, because there is a redirect to the >> correct mapped url: >> >> "print/<external-id>" >> >> Can I follow this redirect? >> >> >> >> 2011/9/29 Stefan Neumann <[email protected]>: >>> 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 >>> >> >> >> >> -- >> 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]
