Dropwizard bean验证不起作用

时间:2015-12-28 07:01:02

标签: java api validation dropwizard

我写了drop-wizard Get API请求,它有GET API请求和参数列表。所以我需要验证那些pareamaters所以问题是我有用

     @Context UriInfo uriInfo 
        MultivaluedMap<String, String> parameters = uriInfo.getQueryParameters();
    String name = parameters.getFirst("name");
Sample sam = new Sample();
sam.setName(name);

获取参数。所以在获取参数之后我已经在对象bean中添加了@NotNull强制参数。现在当我向那些强制参数发送空值时,它正常工作。我想在名称具有空值时抛出错误或者什么。我想知道是什么是我的方法中的问题。

public class Sample {
    @NotNull
    private String name;
    @NotNull
    private String StudentId;

    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

1 个答案:

答案 0 :(得分:2)

你有两个选择,使用JSR-303 Hibernate验证框架,用Dropwizard打包:

  1. 显式验证,结果存储在validate变量中,没有抛出异常:

    ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
    Validator validator = vf.getValidator();
    
    Set<ConstraintViolation<FormDataContentDisposition>> validate =
        validator.validate(samp);
    
  2. 在REST注释方法调用之前进行验证,当您的bean是使用@Valid注释的输入参数时,将抛出ConstraintViolationException

    @POST
    @Path("/doPost")
    public void addSample(@Valid Sample sample)
    {
        /* Do something */
    }
    
  3. 查看更多详情here