Phương pháp ma thuật thực hiện công việc bắt buộc là LocalValidatorFactoryBean#setValidationMessageSource(MessageSource messageSource).
Trước hết, hợp đồng của phương pháp này: -
Chỉ định một mùa xuân MessageSource tùy chỉnh để giải quyết xác nhận bài viết, thay vì dựa vào mặc định JSR-303 của "ValidationMessages.properties" bó trong classpath. Điều này có thể ám chỉ đến một số ngữ cảnh mùa xuân được chia sẻ "nội dung" của tin nhắn mùa xuân hoặc cho một số thiết lập MessageSource đặc biệt cho chỉ nhằm mục đích xác thực.
LƯU Ý: Tính năng này yêu cầu Hibernate Validator 4.1 hoặc cao hơn trên đường dẫn lớp học . Tuy nhiên, bạn vẫn có thể sử dụng nhà cung cấp xác thực khác nhau nhưng ResourceBundleMessageInterpolator của Hibernate Validator phải có thể truy cập được trong cấu hình .
Chỉ định thuộc tính này hoặc "messageInterpolator", không phải cả hai. Nếu bạn muốn xây dựng một MessageInterpolator tùy chỉnh , hãy xem xét bắt nguồn từ ResourceBundleMessageInterpolator Hibernate Validator và đi qua trong một mùa xuân MessageSourceResourceBundleLocator khi xây dựng xen vào của bạn.
Bạn có thể chỉ định message.properties tùy chỉnh của bạn (hoặc .xml) bằng cách gọi phương pháp này ... như thế này ...
my-beans.xml
<bean name="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource">
<ref bean="resourceBundleLocator"/>
</property>
</bean>
<bean name="resourceBundleLocator" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>META-INF/validation_errors</value>
</list>
</property>
</bean>
validation_errors.properties
javax.validation.constraints.NotNull.message=MyNotNullMessage
Person.java
class Person {
private String firstName;
private String lastName;
@NotNull
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
BeanValidationTest.java
public class BeanValidationTest {
private static ApplicationContext applicationContext;
@BeforeClass
public static void initialize() {
applicationContext = new ClassPathXmlApplicationContext("classpath:META-INF/spring/webmvc-beans.xml");
Assert.assertNotNull(applicationContext);
}
@Test
public void test() {
LocalValidatorFactoryBean factory = applicationContext.getBean("validator", LocalValidatorFactoryBean.class);
Validator validator = factory.getValidator();
Person person = new Person();
person.setLastName("dude");
Set<ConstraintViolation<Person>> violations = validator.validate(person);
for(ConstraintViolation<Person> violation : violations) {
System.out.println("Custom Message:- " + violation.getMessage());
}
}
}
Outupt:Custom Message:- MyNotNullMessage
nơi sử dụng trình xác thực đậu trong cấu hình dựa trên chú thích (Cấu hình Java hoàn chỉnh không có XML). – karthi