2012-08-27 102 views

回答

1

經過一番研究,我設法解決了這個問題,並想到與社區分享這個問題。

因爲在檢票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。

我測試了這個並使用它。

如果您有更好的意見,請分享。