Java 在Wicket 1.5中将页面呈现为字符串

Java 在Wicket 1.5中将页面呈现为字符串,java,wicket,wicket-1.5,Java,Wicket,Wicket 1.5,我正在努力将我们现有的Wicket webapp升级到1.5,并且在我们用来呈现HTML电子邮件的renderPage函数中遇到了一个障碍 以前我们使用了和中引用/列出的代码,但该代码不再工作,因为1.5中不存在许多此类 我也发现了这个电子邮件线程,但它的细节很简单,我不知道如何从我的pageClass和参数创建网页。 这是我的密码: // Renders a page under a temporary request cycle in order to get the rendered m

我正在努力将我们现有的Wicket webapp升级到1.5,并且在我们用来呈现HTML电子邮件的renderPage函数中遇到了一个障碍

以前我们使用了和中引用/列出的代码,但该代码不再工作,因为1.5中不存在许多此类

我也发现了这个电子邮件线程,但它的细节很简单,我不知道如何从我的pageClass和参数创建网页。

这是我的密码:

// Renders a page under a temporary request cycle in order to get the rendered markup
public static String renderPage(Class<? extends Page> pageClass, PageParameters pageParameters)
{
    //get the servlet context
    WebApplication application = (WebApplication) WebApplication.get();

    ServletContext context = application.getServletContext();

    //fake a request/response cycle
    MockHttpSession servletSession = new MockHttpSession(context);
    servletSession.setTemporary(true);

    MockHttpServletRequest servletRequest = new MockHttpServletRequest(application, servletSession, context);

    MockHttpServletResponse servletResponse = new MockHttpServletResponse(servletRequest);

    //initialize request and response
    servletRequest.initialize();
    servletResponse.initialize();

    WebRequest webRequest = new ServletWebRequest(servletRequest);

    BufferedWebResponse webResponse = new BufferedWebResponse(servletResponse);
    webResponse.setAjax(true);

    WebRequestCycle requestCycle = new WebRequestCycle(application, webRequest, webResponse);
    requestCycle.setRequestTarget(new BookmarkablePageRequestTarget(pageClass, pageParameters));

    try
    {
        requestCycle.getProcessor().respond(requestCycle);

        if (requestCycle.wasHandled() == false)
        {
            requestCycle.setRequestTarget(new WebErrorCodeResponseTarget(HttpServletResponse.SC_NOT_FOUND));
        }
    }
    finally
    {
        requestCycle.detach();
        requestCycle.getResponse().close();
    }

    return webResponse.toString();
}
检查示例的源代码

public static String renderPage(final PageProvider pageProvider)
{
    final RenderPageRequestHandler handler = new RenderPageRequestHandler(pageProvider, RedirectPolicy.NEVER_REDIRECT);

    final PageRenderer pageRenderer = Application.get().getPageRendererProvider().get(handler);

    RequestCycle requestCycle = RequestCycle.get();

    final Response oldResponse = requestCycle.getResponse();
    BufferedWebResponse tempResponse = new BufferedWebResponse(null);

    try
    {
        requestCycle.setResponse(tempResponse);
        pageRenderer.respond(requestCycle);
    }
    finally
    {
        requestCycle.setResponse(oldResponse);
    }

    return tempResponse.getText().toString();
}