@NotNull注释不检查Jersey REST资源中的null queryparameter

PST*_*PST 10 rest jersey bean-validation

我正在尝试使用javax.validation.validation-api来验证@QueryParam参数.我按照以下步骤操作:

  1. 添加依赖:

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-bean-validation</artifactId>
        <version>2.12</version>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 泽西资源:

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/{param1}")
    @ValidateOnExecution
    public SomeObject get(@PathParam("param1") String param1,
        @NotNull @QueryParam("q1") String q1,
        @NotNull @QueryParam("q2") String q2) {
    
        try {
            //Assuming q1 and q2 are NOT Null here
            ...
        } catch(Exception exception) { 
            throw new WebApplicationException(exception, 
                    Response.Status.INTERNAL_SERVER_ERROR);
        }
        return someObject;
    }     
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我尝试给出各种URL的组合,如在q1和q2中,两个参数都不存在,q1缺席或q2缺席.每次@NotNull都没有被发现.意味着尝试块代码正在执行,而不管q1和q2是什么null.

还有什么需要做的?

我引用了这个链接 - https://jersey.java.net/documentation/latest/bean-validation.html#d0e11956.

如何在我的环境中检查Auto-Discoverable功能是否已启用?