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

时间:2014-09-09 06:21:05

标签: 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>
    
  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;
    }     
    
  3. 我尝试给出各种URL的组合,如q1和q2中两个参数都不存在,q1缺席或q2缺席。每次都没有检测到@NotNull。无论q1和q2是null,都意味着尝试执行块代码。

  4. 还有什么需要做的?

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

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

0 个答案:

没有答案