我正在研究 Spring Boot2.0.3
我正在尝试解析一个简单的 JSON 有效负载,如下所示
{
"title": "Test Title",
"description": "Test Desc"
}
带有验证的模型 (kotlin)
data class SimpleObject(
@NotNull
@JsonProperty("title")
val title: String,
@JsonProperty("description")
val description: String
)
我的方法controller
如下所示
@PostMapping(value = "/${api.version}/path")
public ResponseEntity postLandingData(final @RequestParam("param1") String kruxSegments,
final @RequestHeader(
value = "Some-Id",
required = false) List<String> profileIdList,
final @RequestBody(required = false) @Valid SimpleObject simpleObject) {
//code related to getting response
}
- 当我创建具有有效请求正文的请求时,我可以看到 JSON 有效负载已正确处理
- 当我使用格式错误的 JSON 有效负载创建请求时,如下所示(请注意缺少必填字段)
{
"description": "Test Desc"
}
一个IllegalArgumentException
被抛出
我尝试使用下面ExceptionHandler
的Controller
类似方法捕获此异常,但这不起作用
@ExceptionHandler(IllegalArgumentException.class)
public void handleException() {
LOG.severe("------------------ILLEGAL-----------------");
}
注意:以下依赖项添加到 build.gradle
classpath "org.springframework.boot:spring-boot-starter-validation:2.3.1.RELEASE"
另请注意:是的,它是 javaa + kotlin 代码库 :)
我的问题是
- 根据我阅读的内容,不应该
MethodArgumentNotValidException
在这种情况下被抛出 - 为什么@ExceptionHandler 不能捕获
IllegalArgumentException
?
谢谢