8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Spring MVC 验证文档不清楚

Manuel Jacob 2月前

15 0

我尝试理解 Spring MVC 文档中的以下部分(验证页面):验证可以应用于以下两个级别之一:1. @ModelAttribute、@RequestBody 和 @RequestPart 参数

我尝试理解 Spring MVC 文档中的以下部分(验证页面):

验证可以应用于以下两个级别之一:

1. 如果方法参数使用 Jakarta @Valid 或 Spring 的 @Validated 注释,并且紧随其后没有 Errors 或 BindingResult 参数,并且不需要方法验证(接下来将讨论),则 @ModelAttribute、@RequestBody 和 @RequestPart 参数解析器将单独验证方法参数。在这种情况下引发的异常是 MethodArgumentNotValidException。

  1. 当 @Constraint 注释(例如 @Min、@NotBlank 等)直接在方法参数或方法(用于返回值)上声明时,必须应用方法验证,并且该方法将取代方法参数级别的验证,因为方法验证涵盖方法参数约束和通过 @Valid 进行的嵌套约束。在这种情况下引发的异常是 HandlerMethodValidationException。

好的,从第一段我知道例如:

 @PostMapping("/person")
 public String createPerson(@Validated @ModelAttribute Person person) {
       
        // Handle the logic for creating the person
        // For example, save the person to a database (this part is omitted for simplicity)

    return "success";
}

此方法将使用 Person 类内的 @Constraints 验证接收到的 Person 对象,例如:


public class Person {

    @NotNull
    @Size(max=64)
    @Size(min=2)
    private String name;

    @Min(0)
    private int age;
...

如果验证失败,它会抛出一个 MethodArgumentNotValidException .

此外,这:

@PostMapping("/person")
    public String createPerson(@Validated @ModelAttribute Person person, BindingResult result) {
        if (result.hasErrors()) {
            // handle error
            return "personForm";
   }

   // Handle the logic for creating the person
   
   return "success";
}

不会抛出异常,但是会让我在方法中处理错误。

我不明白的是第二段的意思 - .. 并且取代了方法参数级别的验证 .. 。这在技术上意味着什么?如果应用了方法验证,上述示例中会发生什么?Person 对象不会被验证吗?

帖子版权声明 1、本帖标题:Spring MVC 验证文档不清楚
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Manuel Jacob在本站《java》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: