2012-08-02 62 views
1

採用了最新Spring的MVC(3.1.2.RELEASE)如何使用Spring RestOperations獲得在單元測試中發送的PageRequest對象?

我有一個可調頁的REST方法是這樣的:

@RequestMapping(value = "/myThings", method = RequestMethod.GET) 
public @ResponseBody 
Page<MyThings> findMyThings(@Valid PageRequest pageRequest) { 
    Page<MyThings> myThings = myService.findMyThings(pageRequest); 
    return myThings; 
} 

試圖與org.springframework.web.client.RestOperations測試。一切正常,特別是對於不可修改的請求。但是,對於可分頁的,在REST方法中收到的'pageRequest'對象是由默認構造函數創建的,而不是創建並傳遞到調用中的對象。

這是我試了一下(其中restTemplate是「RestOperations」的一個實例:

.... // make the pageRequest object 
    if (pageRequest != null) { 
     params.put("pageRequest", pageRequest); 
    } 
    String json = restTemplate.getForObject(restEndpoint + "/myThings", 
        String.class, Collections.unmodifiableMap(params)); 

我知道問題/問題是在這一側 - 如果我部署到Tomcat,並通過傳遞pageRequest PARAMS此外,我通過Spring代碼退出,看起來好像pageRequest被放入模型中,它將被拉出,否則就會得到默認值,這就是我所得到的

任何人都可以幫忙嗎?

謝謝!

回答

1

你在哪裏傳遞Collections.unmodifiableMap(params)實際上是Object... urlVariables,其中的變量是@PathVariable類型聲明佔位符,所以這將只爲你@PathVariables

另一種是有它的聲明工作了getForObject參數方式你有它,但支持這種查詢參數:

String json = restTemplate.getForObject(restEndpoint + "/myThings?pagerequest={pageRequest}", 
        String.class, Collections.unmodifiableMap(params)); 
+0

是的,你是正確的。我與那個做我們的UI的人交談,這是有效的,因爲他明確地傳遞了值作爲urlVariables [我不知道]。謝謝 - 這解決了什麼是神祕的行爲! – JoeG 2012-08-06 20:34:02

相關問題