我有以下注釋如何參數化Hibernate Constraint消息以包含字段名稱?
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = IdValidator.class)
public @interface Id {
String message() default "{Id field cannot be null}";
}
,我使用我的類
public class Person {
@Id
String firstName;
@Id
String lastName;
}
當我打電話
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
Set<ConstraintViolation<FakePerson>> violations = validator.validate(person);
我想ConstrainstViolation
有一個消息,說「名字不能爲空」。我怎樣才能做到這一點?
有沒有一種方法可以創建與ConstraintValidator
中的路徑相關聯的消息?
public class IdValidator implements ConstraintValidator<Id, Object> {
@Override
public boolean isValid(Object value, ConstraintValidatorContext context)
{
//Ideally I can build the messages associate with the property here with ConstraintValidatorContext
}
}
我忘記提到這個問題,但我希望有一種方法可以在'ConstraintValidator.isValid()'中獲得'propertyPath',這樣可以在一個地方定義消息。如果我們在得到'Set>違規後生成消息,那麼我們必須做到這一切。 –
Glide
將異常處理邏輯封裝到單獨的類並調用它。在許多情況下,我們都需要執行異常類轉換(JPA異常的內部異常)或需要集中控制器異常處理的情況。如果你想作爲構建後編譯步驟,你也可以使用AspectJ。 – Naros