2012-08-02 60 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

相关问题