gpt4 book ai didi

java - Spring mvc 使用 @RequestBody 验证原语不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:44 25 4
gpt4 key购买 nike

我正在尝试验证从帖子请求正文收到的电子邮件,但它不起作用!

@RequestMapping(value = "myservice/emails", method = RequestMethod.POST)
public String requestFoo(@RequestBody @Email String email) {
return email;
}

当我发送带有不符合电子邮件正则表达式的字符串的请求时,该函数将被执行,并且我会收到 200 状态代码。

即使我添加 @Valid 注释,结果也始终相同。

@RequestMapping(value = "myservice/emails", method = RequestMethod.POST)
public String testValidation(@Valid @RequestBody @Email String email) {
return email;
}

最佳答案

从 Spring 3.2 开始 @RequestBody 方法参数后面可能会跟有 Errors 对象,因此允许在同一个 @RequestMapping 中处理验证错误:

@RequestMapping(value = "myservice/emails", method = RequestMethod.POST)
public ResponseEntity<String> testValidation(@Valid @RequestBody @Email String email, Errors errors) {
if (errors.hasErrors()) {
return ResponseEntity.badRequest().body(ValidationErrorBuilder.fromBindingErrors(errors));
}
return email;
}

并创建一个自定义 validator :

public class ValidationErrorBuilder {

public static ValidationError fromBindingErrors(Errors errors) {
ValidationError error = new ValidationError("Validation failed. " + errors.getErrorCount() + " error(s)");
for (ObjectError objectError : errors.getAllErrors()) {
error.addValidationError(objectError.getDefaultMessage());
}
return error;
}
}

关于java - Spring mvc 使用 @RequestBody 验证原语不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48770632/

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