2013-08-06 6 views
8

आप जेएसएफ में एक वैधकर्ता कैसे बनाते हैं जो शून्य से अधिक होने पर इनपुट टेक्स्ट को मान्य करता है?जेएसएफ शून्य सत्यापनकर्ता से अधिक

<h:inputText id="percentage" value="#{lab.percentage}"> 
    <f:validateDoubleRange minimum="0.000000001"/> 
</h:inputText> 

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

किसी भी विचार?

+0

इस रुचि का हो सकता है: http: //www.kianworknotes.com/2013/06/jsf-number-validator-with-regular.html –

+0

हाँ वैध = ddRange का उपयोग न्यूनतम = 0 के साथ शून्य को भी अनुमति देगा जो w है टोपी मुझे पसंद नहीं है ... –

+0

ठीक है कृपया नीचे मेरा जवाब जांचें और मुझे बताएं (क्षमा करें इसका परीक्षण नहीं कर सका)। – anubhava

उत्तर

6

बस एक कस्टम सत्यापनकर्ता बनाएं, यानी javax.faces.validator.Validator लागू करने वाली कक्षा, और इसे @FacesValidator("positiveNumberValidator") के साथ एनोटेट करें।

लागू validate() विधि इस तरह:

@Override 
public void validate(FacesContext context, UIComponent component, 
     Object value) throws ValidatorException { 

    try { 
     if (new BigDecimal(value.toString()).signum() < 1) { 
      FacesMessage msg = new FacesMessage("Validation failed.", 
        "Number must be strictly positive"); 
      msg.setSeverity(FacesMessage.SEVERITY_ERROR); 
      throw new ValidatorException(msg); 
     } 
    } catch (NumberFormatException ex) { 
     FacesMessage msg = new FacesMessage("Validation failed.", "Not a number"); 
     msg.setSeverity(FacesMessage.SEVERITY_ERROR); 
     throw new ValidatorException(msg); 
    } 
} 

और इस तरह facelets पेज में इसका इस्तेमाल करते हैं:

<h:inputText id="percentage" value="#{lab.percentage}"> 
    <f:validator validatorId="positiveNumberValidator" /> 
</h:inputText> 

उपयोगी लिंक: http://www.mkyong.com/jsf2/custom-validator-in-jsf-2-0/

+0

धन्यवाद यह मेरा समाधान रहा है! –

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