wicket-rest項目現在被分叉到github不支持wicket-1.5。檢票口不能與檢票口一起工作1.5
此問題已在wicket mailing list中提出,但仍未解決。我嘗試了郵件列表中給出的建議,但問題仍然存在。 「onBeforeRender」方法沒有被調用,因此有效繞過了Wicket-rest預處理。
當無狀態提示設置爲true時,可能會調用「onBeforeRender」嗎?
wicket-rest項目現在被分叉到github不支持wicket-1.5。檢票口不能與檢票口一起工作1.5
此問題已在wicket mailing list中提出,但仍未解決。我嘗試了郵件列表中給出的建議,但問題仍然存在。 「onBeforeRender」方法沒有被調用,因此有效繞過了Wicket-rest預處理。
當無狀態提示設置爲true時,可能會調用「onBeforeRender」嗎?
經過一番研究,我設法解決了這個問題,並想到與社區分享這個問題。
因爲在檢票1.5 API的變化,需要在檢票REST的API類以下變化:
AbstractWebServicePage(或同類產品,如果你已付出吧)現在應該實現IMarkupResourceStreamProvider。實現可以是這樣的:(從郵件列表拍攝)
@Override
public IResourceStream getMarkupResourceStream(MarkupContainer container, Class<?> containerClass)
{
return new StringResourceStream("");
}
「hasAssociatedMarkup」現在已經過時,並且可以從AbstractWebServicePage被刪除。
將在AbstractWebServicePage中重寫的「onBeforeRender」中定義的代碼移動到名爲「onBeforeRenderPage」的方法中。請注意,這種方法不是wicket API的一部分,而是由我們創建的,因爲在這種情況下,「onBeforeRender」不會被調用。
protected void onBeforeRenderPage()
{
HttpServletRequest servletRequest = (HttpServletRequest) getRequest().getContainerRequest();
HttpServletResponse servletResponse = (HttpServletResponse) getResponse().getContainerResponse();
String method = servletRequest.getMethod();
logger.debug("Received a {} request from {}:{}", new Object[]{method, servletRequest.getRemoteAddr(),
servletRequest.getRemotePort()});
if (POST.equals(method)) {
try {
setModelFromBody(getRequestBody());
} catch (Exception e) {
//swallow this exception
}
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());
}
就是這樣,你現在準備再次享受高雅檢票REST API,這一次檢票1.5。
我測試了這個並使用它。
如果您有更好的意見,請分享。