spring rest app,无法从PUT获取数据

时间:2015-08-13 13:15:54

标签: spring rest

我在控制器中有两个方法,这是来自客户端的处理程序请求。我不能得到PUT的请求体。对于发送请求,我在Chrome中使用Advanced Rest Client。

@RequestMapping(value = "/addPupil", method = RequestMethod.POST)
public void addPupil(Pupil pupil){
    System.out.println(pupil.toString());
}

高级休息客户端的结果:

  

状态200确定响应不包含任何数据。

标准输出

Pupil{address='is address', level='is level', group='is group', last='is last', name='is name'}

但是这个方法有问题,我不能得到瞳孔对象!

@RequestMapping(value = "/changePupil/{id}", method = RequestMethod.PUT)
public void changePupil(@PathVariable("id") Long id, Pupil pupil){
    System.out.println("id: "+id);
    System.out.println(pupil.toString());
}

高级休息客户端的结果:

  

状态200确定响应不包含任何数据。

标准输出:

id: 2
Pupil{address='null', level='null', group='null', last='null', name='null'}

2 个答案:

答案 0 :(得分:0)

你应该使用@RequestBody

@RequestMapping(value = "/changePupil/{id}", method = RequestMethod.PUT)
public void changePupil(@PathVariable("id") Long id,@RequestBody Pupil pupil){
    System.out.println("id: "+id);
    System.out.println(pupil.toString());
}

答案 1 :(得分:0)

利用您的控制器类而不是@RestController上的@Controller,并指定您的其他方法消耗的MediaType,您也可能必须注册相应的HttpMessageConverter

参考:How to configure MappingJacksonHttpMessageConverter while using spring annotation-based configuration?