rob*_*nst 9 java java-ee bean-validation
我有一个自定义bean验证器,它检查实体上的给定字段是否对某些条件是唯一的.如果验证失败,则消息应包括已存在实体的字段(例如ID).例如,消息应该是:
"Product 42 already has such a value defined, choose a unique value."
Run Code Online (Sandbox Code Playgroud)
这可能使用bean验证吗?
AFAICS,消息格式可能包括参数,例如:
"Length must be between {min} and {max}."
Run Code Online (Sandbox Code Playgroud)
但是这只能引用验证注释的"静态"属性,在这种情况下:
@Size(min=1, max=16)
private String name;
Run Code Online (Sandbox Code Playgroud)
就我而言,该值仅在isValid我的自定义验证器中已知.
小智 3
你是对的!,对于你想要的!,你可以在 isValid() 方法内构建约束违规消息。为此,约束注释应该特定于应用它的特定类,并且它应该是类级别验证约束。在验证失败返回 false 之前,在 isValid 内部,您可以创建包含类实例值的消息。例如:
@check class Test{ int id; @validations...on fields}.
public boolean isValid(Test value, ConstraintValidatorContext context)
{
// your check logic
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate("It should be different for(custom message) .."+ value.id).addConstraintViolation();
return false; // based on constraint filure.
}
Run Code Online (Sandbox Code Playgroud)
但我认为你想用字段级注释来做到这一点!我不知道期待你的结果。
| 归档时间: |
|
| 查看次数: |
4334 次 |
| 最近记录: |