आवश्यक कार्य करने वाली जादू विधि LocalValidatorFactoryBean#setValidationMessageSource(MessageSource messageSource) है।
सबसे पहले, विधि का अनुबंध: -
, मान्यता संदेशों को हल करने के लिए एक कस्टम वसंत MessageSource निर्दिष्ट बजाय "ValidationMessages.properties" JSR-303 के डिफ़ॉल्ट पर निर्भर के बंडल कक्षा में। यह स्प्रिंग संदर्भ के साझा "संदेश स्रोत" बीन, या कुछ सत्यापन उद्देश्यों के लिए विशेष संदेश स्रोत सेटअप का संदर्भ ले सकता है।
नोट: यह सुविधा classpath पर हाइबरनेट सत्यापनकर्ता 4.1 या उच्चतर की आवश्यकता है। फिर भी आप विभिन्न सत्यापन प्रदाता का उपयोग कर सकते हैं लेकिन हाइबरनेट वैलिडेटर के संसाधनबंडल मैसेजइंटरपोलेटर कक्षा कॉन्फ़िगरेशन के दौरान पहुंच योग्य होनी चाहिए।
या तो यह संपत्ति या "messageInterpolator" निर्दिष्ट करें, दोनों नहीं। यदि आप एक कस्टम MessageInterpolator निर्माण हाइबरनेट सत्यापनकर्ता के ResourceBundleMessageInterpolator और MessageSourceResourceBundleLocator एक स्प्रिंग में गुजर जब अपने क्षेपक के निर्माण से पाने पर विचार करना चाहते हैं।
आप इस पद्धति लागू ... इस तरह से अपने कस्टम message.properties (या .xml) निर्दिष्ट कर सकते हैं ...
मेरी-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।जावा
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
जहां वैधकर्ता का उपयोग करना है एनोटेशन आधारित कॉन्फ़िगरेशन में बीन (एक्सएमएल के बिना पूर्ण जावा कॉन्फ़िगरेशन)। – karthi