Spring rest Web服务@requestparam到方法自定义类(NOT string)

时间:2015-08-01 16:11:47

标签: spring web-services rest spring-restcontroller

我正在使用本教程https://spring.io/guides/gs/rest-service/

我想传递给除了String之外的Web服务API方法参数:

@RestController
public class ApiClass {

   @RequestMapping("/service")
   public int service(@RequestParam(value="paramIn") CustomClass paramIn) {
      if (paramIn.value != 0) return 1;
      else return 0;
  }

}

但是当我尝试它时,我得到了这个错误:

  

HTTP状态500 - 无法将“java.lang.String”类型的值转换为必需类型“CustomClass”;嵌套异常是java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为所需类型[CustomClass]:找不到匹配的编辑器或转换策略。

Thnaks,

1 个答案:

答案 0 :(得分:2)

通常的方法是使用POSTPUT方法并使用@RequestBody注释自定义对象。例如:

 @RequestMapping(value = "/service", 
                 method = RequestMethod.POST, 
                 consumes = MediaType.APPLICATION_JSON_VALUE)
 public int service(@RequestBody CustomClass paramIn) {

     // do something with the paramIn

 }

如果POST CustomClass实例到端点/service的JSON表示,Spring将反序列化它并将其作为参数传递给控制器​​。