Весенний отдых веб-службы @requestparam для пользовательского класса метода (НЕ строка)

Я использую этот учебник https://spring.io/guides/gs/rest-service/

Я хочу передать параметр метода 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 - Не удалось преобразовать значение типа "java.lang.String" в требуемый тип "CustomClass"; вложенным исключением является java.lang.IllegalStateException: невозможно преобразовать значение типа [java.lang.String] в требуемый тип [CustomClass]: не найдено подходящих редакторов или стратегии преобразования найдено`

Thnaks,

1 ответ

Решение

Обычный способ сделать это - использовать POST или же PUT метод и аннотировать пользовательский объект с @RequestBody, Например:

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

     // do something with the paramIn

 }

если ты POST JSON представление вашего CustomClass экземпляр до конечной точки /service Spring будет десериализовать его и передать в качестве аргумента вашему контроллеру.

Другие вопросы по тегам