2013-08-06 18 views
8

JSF'de, sıfırdan büyükse giriş metnini doğrulayan bir doğrulayıcı nasıl oluşturulur?JSF sıfır doğrulayıcıdan büyük

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

Yukarıdaki kodu kullanıyorum ancak bunun uygun olup olmadığından emin değilim. Her ne kadar çalışıyor olsa da, bundan daha düşük bir sayı gerekiyorsa, jsf dosyasını tekrar değiştirmem gerekiyor. Kullanım durumu, sıfırdan büyük olan her şey iyidir, ancak negatif sayı değil.

Herhangi bir düşünce?

+0

Bu ilginizi çekebilecek http: //www.kianworknotes.com/2013/06/jsf-number-validator-with-regular.html –

+0

Evet, validateDoubleRange ile minimum = 0 kullanılırken, sıfır değerine de izin verilir. şapka sevmiyorum ... –

+0

Tamam, lütfen benim cevabımı kontrol edin ve bana bildirin (üzgünüm test edemedi). – anubhava

cevap

6

Sadece bir özel doğrulayıcı, yani javax.faces.validator.Validator'u uygulayan bir sınıf oluşturun ve @FacesValidator("positiveNumberValidator") ile ek açıklama ekleyin.

böyle validate() yöntemi uygulamak:

@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); 
    } 
} 

Ve böyle facelets sayfasında kullanmak:

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

Faydalı link: http://www.mkyong.com/jsf2/custom-validator-in-jsf-2-0/

+0

Teşekkürler bu benim çözümüm oldu! –