Hibernate 文档中有一个关于插入验证消息的很好的文档:第 4 章 内插约束错误消息.
如果您创建一个文件ValidationMessages.properties
在类路径的根目录中,然后您可以更改其中的所有验证消息:
javax.validation.constraints.Size.message=Please enter at least {min} and at most {max} characters.
中的参数{...}
只是注释的属性名称。这几乎适用于所有限制。如果你想引用经过验证的值,你可以使用{validatedValue}
。你也可以使用Formatter
格式化值:
... ${formatter.format('...', validatedValue)} ...
不幸的是没有格式字符串length.
所以如果你真的想向所有人传达这样的信息@Size
,那么你将不得不实现你自己的javax.validation.MessageInterpolator
(see 自定义消息插值在上面的链接中)。
补充说明:更改默认验证消息会产生副作用:@Size
也可用于收藏。在这种情况下,至少我的信息是不合适的。我通常为此创建第二条验证消息:
javax.validation.constraints.Size.Collection.message=Please select at least {min} and at most {max} elements.
并在约束中使用该值:
public final class ValidationMessages {
public static final String COLLECTION_SIZE =
"javax.validation.constraints.Size.Collection.message";
}
public class MyClass {
@Size(min = 1, max = 10, message = ValidationMessages.COLLECTION_SIZE)
private Collection<String> elements;
}
通过代码样式工具中的匹配规则,我确保不会忘记定义消息@Size
集合上的注释。