Spring Boot和Bean验证使用不同的方法和相同的类

问题描述 投票:0回答:1

我正在使用Spring Boot进行其余的Web服务,我想知道是否有可能通过在控制器层中将POJO作为参数的方法对bean验证注释进行不同的验证。

示例:

POJO:

    Public class Person{
            @NotNull(forMethod="methodOne")
            private String firstName;
            @NotNull(forMehotd="methodTwo")
            private String lastName;
            private String age;

            //getter and setter
    }

控制器

    @RestController
    public class controller{

        @RequestMapping(....)
        public ResponseEntity methodOne(@Valid @RequestBody Person person){
            .....
        }

        @RequestMapping(....)
            public ResponseEntity methodTwo(@Valid @RequestBody Person person){
            ......
        }
    }

我知道可以在方法中使用单独的参数来实现,但是我有一个具有如此多属性的POJO。有可能这样做吗?

java spring spring-boot spring-mvc bean-validation
1个回答
0
投票

我认为您应该在bean验证注释中使用validation groups,并使用@Validated注释而不是@Valid注释。因为@Validated批注具有value属性,该属性指定要验证的组。

例如:

Public class Person{
        @NotNull(groups={MethodOne.class})
        private String firstName;
        @NotNull(groups={MethodTwo.class})
        private String lastName;
        private String age;

        //getter and setter
}

@RestController
public class controller{

    @RequestMapping(....)
    public ResponseEntity methodOne(@Validated(MethodOne.class) @RequestBody Person person){
        .....
    }

    @RequestMapping(....)
        public ResponseEntity methodTwo(@Validated(MethodTwo.class) @RequestBody Person person){
        ......
    }
}

顺便说一句,不要忘记您应该创建MethodOneMethodTwo接口以将它们用作验证组。

© www.soinside.com 2019 - 2024. All rights reserved.