Fee*_*eco 4 spring-mvc bean-validation kotlin
我有一节课:
class User(
var name: String
)
Run Code Online (Sandbox Code Playgroud)
并且映射的帖子请求:
@PostMapping("/user")
fun test(@Valid @RequestBody user: User) {
//...
}
Run Code Online (Sandbox Code Playgroud)
如果客户端发送用户的JSON name: null怎么办?是否会被MVC Validator拒绝或抛出异常?我应该注释name用@NotNull?不幸的是,我无法检查,因为只能编写测试(它不可用于创建User(null)).
你可以避免使用@NotNull,因为它永远不会被非可空属性触发(bean验证只有在杰克逊反序列化JSON之后才会启动 - 这就是失败的地方).
假设你正在使用jackson-module-kotlin,那么你应该得到一个异常MissingKotlinParameterException作为根本原因,然后你可以在a中处理@ControllerAdvice.在您的建议中,您可以处理正常的bean验证异常(例如ConstraintViolationException由此引起@Size)和缺少非null构造函数params(MissingKotlinParameterException)并返回指示错误字段的API响应.
唯一需要注意的是,jackson-kotlin-module 第一个缺失属性失败,不像Java中的bean验证,它将返回所有违规.
正如我测试的那样,@NotNull根本不会影响 MVC 验证。您只会WARN在控制台中收到一条消息,这是正常的:
无法读取HTTP消息:org.springframework.http.converter.HttpMessageNotReadableException:无法读取文档:实例化...
| 归档时间: |
|
| 查看次数: |
1523 次 |
| 最近记录: |