相关疑难解决方法(0)

我可以覆盖jsr-303验证注释

我有一个如下测试:

public class TestSizeAnnotation
{
public static void main(String[] args)
{
    System.out.println(
            Validation.buildDefaultValidatorFactory().getValidator().validate(new C()));
}

public static class P 
{
    private List<String> lst = newArrayList("AA");
    @Size(max=0, message="P")
    public List<String> getLst()
    {
        return lst;
    }
    public void setLst(List<String> lst)
    {
        this.lst = lst;
    }
}
public static class C extends P 
{
    @Override
    @Size(max=5, message="C")
    public List<String> getLst()
    {
        return super.getLst();
    }

}
}
Run Code Online (Sandbox Code Playgroud)

具有以下输出:
[ConstraintViolationImpl{interpolatedMessage='P', propertyPath=lst, rootBeanClass=class com....validator.TestSizeAnnotation$C, messageTemplate='P'}]

但是,我希望可以@Size覆盖注释,并且不会出现警告.
有没有办法实现这一目标?

编辑:我发现一个错误似乎与此有关,但我运行4.2.0最终仍然得到上述行为.

java annotations hibernate bean-validation

9
推荐指数
1
解决办法
7988
查看次数

带有继承的 Spring 验证

我正在尝试验证有点分层的 DTO(formModel,无论您喜欢什么术语)(继承和依赖其他类)。

是否可以使以下模型配置工作:

public abstract class A {

    @NotNull
    private String fieldA1;

    @NotNull
    @Size(min = 2, max = 30)
    private String fieldA2;

    // ... and so on

}


public class B extends A {

    @NotNull
    private String fieldB1;

    @NotNull
    private Xyz fieldB2;

    // and so on
}


public class Xyz {

    @NotNull
    private String fieldXyz1;

    // etc..
}
Run Code Online (Sandbox Code Playgroud)

弹簧架控制器:

@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity addCustomer(@RequestBody @Valid B customerDto, BindingResult bindingResult) {
// controller logic here
}
Run Code Online (Sandbox Code Playgroud)

问题是:只有似乎“有效”的约束注释是父类 A 上的那些。我提交了一个在 A …

java validation rest spring

8
推荐指数
0
解决办法
4484
查看次数