首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wicket-rest不适用于wicket 1.5

wicket-rest不适用于wicket 1.5
EN

Stack Overflow用户
提问于 2012-08-27 15:52:31
回答 1查看 390关注 0票数 1

现在已经派生到githubwicket-rest项目不能与wicket-1.5一起工作。

此问题已在wicket mailing list中提出,但仍未得到解决。我尝试了邮件列表中给出的建议,但问题仍然存在。不会调用"onBeforeRender“方法,因此可以有效地绕过wicket-rest预处理。

当无状态提示设置为true时,可能没有调用"onBeforeRender“?

EN

回答 1

Stack Overflow用户

发布于 2012-08-27 15:52:31

经过一些研究,我设法解决了这个问题,并想与社区分享这个问题。

由于wicket-1.5中的api更改,因此需要在wicket-rest-api类中进行以下更改:

  • AbstractWebServicePage (如果你已经派生了它,它等同于它)现在应该实现IMarkupResourceStreamProvider了。实现可以是这样的:(取自邮件列表)

@Override public container getMarkupResourceStream(MarkupContainer IResourceStream,Class containerClass) { return new StringResourceStream("");现在不推荐使用AbstractWebServicePage.

  • Move,可以将AbstractWebServicePage中被覆盖的"onBeforeRender“内定义的代码从AbstractWebServicePage中移除到名为"onBeforeRenderPage”的方法中。请注意,此方法不是wicket api的一部分,而是由我们创建的,因为在这种情况下不会调用"onBeforeRender“。

protected void onBeforeRenderPage() { HttpServletRequest servletRequest = (HttpServletRequest) getRequest().getContainerRequest();HttpServletResponse servletResponse = (HttpServletResponse) getResponse().getContainerResponse();String servletResponse= servletRequest.getMethod();logger.debug(“收到来自{}的{}请求:{}”,新方法{ Object[]{ method,servletRequest.getRemoteAddr(),servletRequest.getRemotePort()});if (POST.equals(method)) { try {setModelFromBody(getRequestBody();} catch (Exception e) {//吞下此异常} doPost(getPageParameters(),servletRequest,servletResponse);} else if (GET.equals( method )) { doGet(getPageParameters(),servletRequest,servletResponse);}}

  • 在相应的子类(JSon,Xml等)中,将方法"onRender()“替换为"renderPage()”,并在执行任何其他操作之前调用自定义编写的超级方法"onBeforeRenderPage“。它可能看起来像这样:

@Override public final void renderPage() { super.onBeforeRenderPage();getResponse().write(getJson());}

就这样,您现在可以再次享受优雅的wicket-rest api了,这次使用的是wicket-1.5。

我已经测试并使用了它。

如果你有更好的意见,请分享。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12138115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档