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]

Reply via email to