2011-11-03 18 views
7

मेरे पास एक वस्तु है।वसंत एमवीसी एनोटेशन सत्यापन पूर्णांक

public class MyObject 
{ 
    .... 
    @Column(name = "a_number") @NotNull @NumberFormat(style = Style.NUMBER) @Min(1) 
    private Integer aNumber; 
    ... 
    //getters and setters 
} 

मेरी नियंत्रक में मैं अपने वस्तु पर @Valid एनोटेशन है तैनात किया जा रहा। मेरे पास इस नंबर को छोड़कर कक्षा (उनके सभी स्ट्रिंग्स) में मेरे सभी अन्य क्षेत्रों पर काम करने की वैधता है। अगर मैं अपने फॉर्म से एक नंबर दर्ज करता हूं तो यह ठीक काम करता है और यदि मैं @Min (1) का उल्लंघन करता हूं तो यह मुझे सही सत्यापन त्रुटि भी देता है। मेरी समस्या हालांकि यह है कि यदि आप किसी संख्या के बजाय स्ट्रिंग दर्ज करते हैं तो यह नंबरफॉर्मेट अपवाद फेंक देता है।

मैंने इंटीजर और सत्यापन के कई उदाहरण देखे हैं लेकिन यदि आप पोस्ट किए गए फॉर्म में स्ट्रिंग दर्ज करते हैं तो कोई भी खाता नहीं लेता है। क्या मुझे सत्यापन को और कहां करने की ज़रूरत है? जावास्क्रिप्ट? मुझे एक ऐसा समाधान चाहिए जो वसंत सत्यापन के बाकी हिस्सों के अनुरूप हो, इसलिए मैं इसे अन्य वर्गों में उपयोग कर सकता हूं। मुझे बस एक त्रुटि चाहिए कि यह संख्यात्मक होना चाहिए। इसके अलावा मैंने @ पैटर्न एनोटेशन का उपयोग करने की कोशिश की लेकिन जाहिर है कि केवल तारों के लिए।

सुझाव?

+1

देखें http://stackoverflow.com/questions/4082924/jsr-303-type-checking-before- बाइंडिंग – axtavt

+0

धन्यवाद !! काम किया हुआ पेपर! आपकी पोस्ट मेरी खोजों में कभी दिखाई नहीं दी। – sauce

उत्तर

9

आप अपनी फ़ाइल जो आपके त्रुटि संदेश (इन सामान्य लोगों में यह एक प्रकार मेल नहीं खाता के मामले में के लिए लग रहा है कर रहे हैं को नियंत्रित करता है के लिए निम्न जोड़ सकते हैं:

typeMismatch.commandObjectName.aNumber=You have entered an invalid number for ... 
typeMismatch.aNumber=You have entered an invalid number for ... 
typeMismatch.java.lang.Integer=You have input a non-numeric value into a field expecting a number... 
typeMismatch=You have entered incorrect data on this page. Please fix (Catches all not found) 
+0

यह वही था जो मुझे चाहिए, धन्यवाद! – sauce

3

उन लोगों के लिए जो विचार सही नहीं मिला यहाँ क्या spring 4.2.0 में क्या करना है। WEB-INF > classes फ़ोल्डर में एक फ़ाइल नाम messages.properties बनाएँ। और वसंत विन्यास में। उस फ़ाइल में ऊपर प्रकार मेल नहीं खाता संदेशों डाल या servlet.xml फ़ाइल निम्न सेम पैदा करते हैं।

<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
<beans:property name="basename" value="messages"></beans:property> 
</beans:bean> 

और अन्य सत्यापन नियमों के साथ प्रश्न में private Integer aNumber; जैसे आपके मॉडल विशेषता के लिए यह नियम टाइप मिस्चैच रूपांतरण के लिए भी लागू होता है। आपको इसमें अपना वांछित संदेश मिलेगा।

<form:errors path="aNumber"></form:errors> 

आशा है कि यह दूसरों की सहायता करे।

संबंधित मुद्दे