On Thu, Sep 29, 2011 at 4:18 PM, Stefan Neumann <[email protected]> wrote: > 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. cool. thanks ! > > 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] > >
-- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
