请求参数:
{
"username": "aaa",
"password": "bbb",
"detail": {
"gender": "ccc",
"location": "ddd"
}
}
我希望使用以下命令获取Spring MVC中的请求参数:
@RequestMapping(value = "/test")
public String test(User user) {
return user.toString();
}
User
类的定义如下:
@ToString
@NoArgsConstructor
@Data
public class User {
private String username;
private String password;
private Detail detail;
@Data
@NoArgsConstructor
public class Detail {
private String gender;
private String location;
}
}
发送请求时,我收到错误:
无效的属性'详细[性别]'豆类 [com.example.demo.param.User]:非法获取财产的企图 '细节'抛出异常;嵌套异常是 org.springframework.beans.NullValueInNestedPathException:无效 财产'详细' bean类[com.example.demo.param.User]:可以 不实例化属性类型[com.example.demo.param.User $ Detail] 自动增长嵌套属性路径;嵌套异常是 java.lang.NoSuchMethodException: com.example.demo.param.User $详细。()
请求数据可以在Chrome开发工具中找到:
username: aaa
password: bbb
detail[gender]: ccc
detail[location]: ddd
似乎细节[性别]和细节[位置]无法被识别为细节的子属性
当我使用注释@RequestBody接收内容类型的请求时,它运行良好:application / json。
但是如何在上面的这种情况下将请求参数作为User对象获取?
答案 0 :(得分:0)
使用您的对象结构,请求将适用于这两种情况(选项1更好):
选项1:
username: aaa
password: bbb
detail.gender: ccc
detail.location: ddd
必须通过'dot'
必须按如下方式传递请求以使用Detail对象: (请注意,对象的变量以detail.gender
而不是detail[gender])
<进行访问/强>
选项2: