消息插值是为违反Jakarta Bean验证约束创建错误消息的过程。在本篇文章中,你将了解如何定义和解析这些消息,以及在默认的方法不能满足您的需求时,如何自定义消息内插器。
一、缺省的消息内插器
约束违反消息来源于所谓的消息描述器。每个约束使用这个message属性,定义它自己的消息描述器。
在声明的时候,这个缺省的描述器可以通过一个指定的值,被重写。看下面例子:
public class Car { @NotNull(message = "The manufacturer name must not be null") private String manufacturer;}
如果一个约束被违反,它的描述器会被验证引擎使用的当前配置的MessageInterpolator插入。这个插入的错误消息可以通过调用ConstraintViolation#getMessage()方法,从产生的约束违例中检索。
消息描述器可以包含容器参数,也可以包含消息表达式,它们可以在插入期间被解析。消息参数是字符串常量,存放在{}中,而消息表达式是字符串常量,并被包含在${}中使用。
下面的算法在方法插入期间被应用。
- 使用任何消息参数作为资源包Valid