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]

Reply via email to