2012-04-02 28 views
5

मेरे पास एक इनपुट टेक्स्ट है जो Long संपत्ति पर मैप किया गया है।जेएसएफ रूपांतरण संदेश को कस्टमाइज़ करने के लिए कैसे 'एक या अधिक अंक शामिल होना चाहिए'?

myForm:myField: 'someText' must be a number consisting of one or more digits.

मैं इस संदेश को अनुकूलित करने के लिए कैसे सोच रहा था:

private Long length; 

<h:inputText value="#{bean.length}" /> 

जब मैं उस इनपुट पाठ में गैर अंक दर्ज, मैं निम्नलिखित रूपांतरण त्रुटि मिलती है

length must be a number greater than zero.

उत्तर

9

या तो इनपुट घटक के converterMessage विशेषता का उपयोग:

<h:inputText converterMessage="length must be a number greater than zero" /> 

(और <f:validateLongRange> उपयोग करने के लिए उन नकारात्मक मान दर्ज करने में सक्षम होने को रोकने के लिए और एक validatorMessage आपूर्ति करने के लिए मत भूलना!)

या क्लासपाथ में एक प्रॉपर्टी फ़ाइल बनाएं जो बिल्टिन जेएसएफ LongConverter:

javax.faces.converter.LongConverter.LONG = length must be a number greater than zero 
के डिफ़ॉल्ट संदेश को ओवरराइड करता है 210

और संदेश बंडल के रूप में पंजीकृत किया गया है faces-config.xml में:

<application> 
    <message-bundle>com.example.CustomMessages</message-bundle> 
</application> 

उपरोक्त उदाहरण मानता है कि फ़ाइल का नाम CustomMessages.properties है और com.example पैकेज में रखा गया है। आप इसे जहां भी चाहें नाम और रख सकते हैं।

आप javax.faces.converter.LongConverter.LONG और the JSF specification के अध्याय 2.5.2.4 में उनके डिफ़ॉल्ट मानों का एक सिंहावलोकन पा सकते हैं, जिसे this answer में भी कॉपी किया गया है।