使用Jakarta Be Validation https://hibernate.org/validator/来验证Java代码,我用默认的@NotEmpty验证anotaton注解了一个CLASS属性
@Validate
public class A {
..
@NotEmpty
private List<String> myList;
..
}
在一个测试中,我将myList设置为一个空列表,验证该列表,并期望违规“不得为空”,这是标准@NotEmpty注解的默认违规消息。我通过打印它发现了这一点,但这里也是https://github.com/hibernate/hibernate-validator/blob/main/engine/src/main/resources/org/hibernate/validator/ValidationMessages.properties
Set<ConstraintViolation<A>> violations = validator.validate(A);
assertThat(violations).anyMatch(having Message("must not be empty", A.class));
这是可行的,但我希望将预期的消息字符串替换为对默认字符串的引用,如jakarta.validation.constraints.Null.Message,以避免重复字符串。然而,这并不起作用:
assertThat(violations).anyMatch(having Message(jakarta.validation.constraints.Null.message, A.class));
周围有没有验证Maven,可以告诉我我错过了什么?
1条答案
按热度按时间p1tboqfb1#
如果由**
/ValidationMessages.properties
(或特定于语言的ValidationMessages_<x>(_<y>).properties
)提供,则必须从类路径**加载它:如果被直接类注解提供/覆盖,则必须在特定的类字段或方法上使用反射并获取其注解。