- это мой URL
http://localhost:8080/estates?pageCount=3&pageIndex=2&multiSelector = {roomCountRanges:[{from:3,to:3},{from:4,to:4}]}
- вот мой код контроллера: Код контроллера
** - я вижу ошибку **
Field error in object 'myModel' on field 'multiSelector': rejected value [{roomCountRanges:[{from:3,to:3},{from:4,to:4}]}];
codes [typeMismatch.myModel.multiSelector,typeMismatch.multiSelector,typeMismatch.com.centanet.service.model.MultiSelector,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [myModel.multiSelector,multiSelector];
arguments []; default message [multiSelector]];
default message [Failed to convert property value of type 'java.lang.String' to required type 'com.centanet.service.model.MultiSelector' for property 'multiSelector';
nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.centanet.service.model.MultiSelector' for property 'multiSelector': no matching editors or conversion strategy found],
Любые идеи? огромное спасибо
1:
в вашем URL-адресе вы передаете параметры запроса как все свойства, но модель ожидает тело, как показано ниже: поэтому создайте класс модели, установите все значения, а затем вызовите контроллер с передачей класса модели.
{
"pageCount": 3,
"pageIndex": 2,
"multiSelector": {
"roomCountRanges": [
{
"from": 3,
"to": 3
},
{
"from": 4,
"to": 4
}
]
}
}
Если вы не хотите передавать multiSelector в качестве тела запроса, вы можете прочитать его как строку в контроллере, а затем использовать Gson или Jackson для преобразования его в объект java.
Gson gson = new Gson();
gson.fromJson(multiSelector, MultiSelector.class);
Однако я бы передал JSON в качестве тела запроса.
Вы можете использовать следующий код:
@PostMapping public void test (модель @RequestBody MyModel) {
}
Не передавайте multiSelector в качестве параметра URL, вместо этого отправьте этот json через тело запроса.