如何将REST参数映射到复杂对象?

时间:2015-01-21 14:49:26

标签: java spring web-services rest spring-mvc

我想创建REST服务spring,其中包含一堆参数。我希望这些参数自动映射到复杂的传输对象,例如:

@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String content(@RequestParam RestDTO restDTO) {
    Sysout(restDTO); //always null
}

public class RestDTO {
    private boolean param;
    //getter+setter
}

但是:当我执行localhost:8080/myapp?param=true之类的查询时,restDTO参数仍为null

我错过了什么?

3 个答案:

答案 0 :(得分:1)

尝试使用localhost:8080/myapp?param=true

可能是另一双眼睛看到明显的情况:)

修改

从方法签名中删除@RequestParam,对我有用。

答案 1 :(得分:0)

原来我必须省略复杂对象的@RequestParam

@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String content(RestDTO restDTO) {
    Sysout(restDTO);
}

答案 2 :(得分:0)

所以,我发现很少有问题(如果它当然不是错误的话):

  1. localhost:8080/myapp&param=true"&"不正确,你必须使用"?"从localhost:8080/myapp?param=true
  2. 这样的网址中拆分params
  3. 我在@RequestMapping(method = RequestMethod.GET)中看不到映射值(但如果您发现请求已经进行了正确的配置)。