【发布时间】:2018-05-01 12:32:53
【问题描述】:
我有一个使用 Spring Boot 1.5.7 和 Jackson 2.8 的非常简单的 REST API 项目。
问题
如果请求中有未知字段,我希望 Jackson 投诉并提出异常。虽然我没有设置任何东西告诉它忽略它们,但它只是忽略它,我不知道为什么。
请求:
{
"appId":1,
"version":"1.0",
"status":true,
"locked":false,
"field": "it is ignored, but it must not be"
}
请求方法
@PutMapping
public ResponseEntity<?> updateAppToggle(@RequestBody AppToggleUpdateRequest request) {
AppToggle updatedAppToggle = service.update(request);
return new ResponseEntity<AppToggleResponse>
(AppToggleResponse.fillResponse(updatedAppToggle), HttpStatus.OK);
}
请求类
@Data
public class AppToggleUpdateRequest {
@NotNull
@Getter
private Long appId;
@NotNull
@Getter
private String version;
private Boolean status;
private Boolean locked;
}
我的 application.properties 不包含任何特殊内容,仅包含数据源和 H2 内存数据库的一些内容。
我真的不知道发生了什么。任何帮助将不胜感激。
【问题讨论】:
-
基本上,这很奇怪,因为规范明确指出
FAIL_ON_UNKNOWN_PROPERTIES默认情况下处于启用状态。您确定这些都不是:howtoprogram.xyz/2017/02/18/… 适用于您的代码吗? -
正如我所说,我的应用程序非常简单(用于学习目的),而且我使用的所有东西都是开箱即用的。我可以尝试像this 这样的解决方案,但它没有任何意义,正如你所说,我期望的行为是默认设置的,尽管它似乎不在我的应用程序中。
标签: java spring-boot jackson