我使用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的区别
我真的很不安
答案 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;
}