-这是我的网址
http://localhost:8080/estates?pageCount=3&pageIndex=2&multiSelector={roomCountRanges:[{from:3,to:3},{from:4,to:4}]}
-这是我的控制器代码: Controller Code
**-我看到的错误**
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:
答案 0 :(得分:0)
在您的网址中,您将请求参数作为所有属性传递,但模型期望如下所示:因此,请创建一个Model类,设置所有值,然后通过传递的模型类调用控制器。
{
"pageCount": 3,
"pageIndex": 2,
"multiSelector": {
"roomCountRanges": [
{
"from": 3,
"to": 3
},
{
"from": 4,
"to": 4
}
]
}
}
答案 1 :(得分:0)
如果您不想将multiSelector作为请求主体传递,则可能希望在控制器中将其作为字符串读取,然后使用Gson
或Jackson
将其转换为Java对象。
Gson gson = new Gson();
gson.fromJson(multiSelector, MultiSelector.class);
但是,我会将JSON作为请求正文传递。
答案 2 :(得分:0)
您可以使用如下代码:
@PostMapping 公共无效测试(@RequestBody MyModel模型){
}
不要将multiSelector作为URL参数传递,而是通过Request正文发送此json。