Java 在Wicket 1.5中将页面呈现为字符串
我正在努力将我们现有的Wicket webapp升级到1.5,并且在我们用来呈现HTML电子邮件的renderPage函数中遇到了一个障碍 以前我们使用了和中引用/列出的代码,但该代码不再工作,因为1.5中不存在许多此类 我也发现了这个电子邮件线程,但它的细节很简单,我不知道如何从我的pageClass和参数创建网页。 这是我的密码: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
// 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();
}