spring 将 Web 服务 @requestparam 用于自定义方法 class(非字符串)

spring rest web service @requestparam to method custom class (NOT string)

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

我想传递给 Web 服务 API 方法参数而不是 String:

@RestController
public class ApiClass {

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

}

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

HTTP Status 500 - Failed to convert value of type 'java.lang.String' to required type 'CustomClass'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [CustomClass]: no matching editors or conversion strategy found`

谢谢,

通常的做法是使用 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 Spring 的 JSON 表示将反序列化它并将它作为参数传递给你的控制器。