2013-08-06 24 views
8

Jak utworzyć walidator w JSF, który sprawdza poprawność tekstu wejściowego, jeśli jest większy od zera?JSF weryfikator większy niż zero

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

Mam powyższy kod, ale nie jestem pewien, czy jest to optymalne. Mimo że działa, ale jeśli potrzebny jest inny numer mniejszy, to potrzebuję ponownie zmienić plik jsf. W przypadku użycia wszystko, co jest większe od zera, jest w porządku, ale nie liczbą ujemną.

Jakieś myśli?

+0

To może być interesujące: http: //www.kianworknotes.com/2013/06/jsf-number-validator-with-regular.html –

+0

Tak przy użyciu validateDoubleRange z minimalną = 0 pozwoliłoby na zero także, co jest w kapelusz Nie podoba mi się ... –

+0

OK pls sprawdź moją odpowiedź poniżej i daj mi znać (przepraszam nie mogłem go przetestować). – anubhava

Odpowiedz

6

Po prostu utwórz niestandardowy weryfikator, tj. Klasę implementującą javax.faces.validator.Validator i dodaj adnotację do niej za pomocą @FacesValidator("positiveNumberValidator").

Wdrożenie metody validate() takiego:

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

i używać go na stronie Facelets tak:

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

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

+0

To było moje rozwiązanie! –

Powiązane problemy