模型属性在Spring Boot MVC中是否为空?

时间:2015-07-30 22:49:48

标签: java spring spring-mvc

我使用Spring 4和映射方法如下

POST /v3/users/6/reset_password HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 8afe6ef8-a4cd-fc9d-a6cc-b92766a56bd6

{"oldPassword":"actualPassword", "newPassword":"newOne"}

然后,我做了这个请求:

zPosition

并且所有UserPasswordResetRequestDTO属性都为空

我一直在寻找并找到一些相关的问题,区别在于那些是PUT方法(然后自从Spring 3.1可以用HttpPutFormContentFilter完成),但这是一个帖子,我找不到任何问题......我做错了什么?

修改

我尝试用@ModelAttribute更改@RequestBody,它只是映射了“userId”属性(来自url),其余属性保留为null。与@RequestBody一样,与userId的区别

我真的很不安

1 个答案:

答案 0 :(得分:0)

最后,我发现了发生了什么。我有这个杰克逊配置

a.end() + 1

导致在序列化和去实现时从驼峰转换为下划线。所以代码没有任何问题,只是一个无效的请求,在这种情况下必须是这个:

@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
    builder.indentOutput(true).dateFormat(new SimpleDateFormat("yyyy-MM-dd"));
    builder.propertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
    builder.serializationInclusion(Include.NON_NULL);
    return builder;
}