gpt4 book ai didi

java - 如何在 Spring 的一个 ConstraintValidator 中同时验证 @PathVariable 和 @RequestBody?

转载 作者:行者123 更新时间:2023-11-30 05:24:48 26 4
gpt4 key购买 nike

我在 Controller 中有一个端点处理程序方法:

@PutMapping("/users/{userId}")
public UserDto updateUser(@PathVariable UUID userId, @RequestBody UserRequestDto updateRequest) {
...
}

UserRequestDto 对象内,我有一个 email 字段。

我想验证 email 值是否尚未使用。

这对于创建来说不是问题,因为我只需要检查电子邮件是否不在数据库中。我创建了一个简单的 ConstraintValidator 并且一切正常。

但是对于更新,我需要检查更新的电子邮件地址是否未被其他人使用,并忽略当前更新的用户。所以我需要同时对 userIdupdateRequest 进行操作。是否可以创建自定义 ConstraintValidator 来处理这种情况?

最佳答案

您可以使用 Spring 的 @Validated 注释您的 Controller (类级别),然后 @NotBlank @PathVariable String some 也可以工作。

Spring 将围绕您的所有方法创建一个 AOP 代理,并在每个参数上查找 JSR 303 注释,但它不会触及 @RequestBody,因此对于正文,您仍然必须添加 @Valid 将通过标准方法进行检查。

另外,请参阅此问题 https://github.com/spring-projects/spring-framework/issues/26219

关于java - 如何在 Spring 的一个 ConstraintValidator 中同时验证 @PathVariable 和 @RequestBody?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58871154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com