2013-08-06 17 views
8

Come si crea un validatore in JSF che convalida il testo di input se è maggiore di zero?JSF validatore maggiore di zero

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

Ho il codice sopra ma non sono sicuro se questo è ottimale. Anche se funziona, ma se è necessario un altro numero inferiore a questo, ho bisogno di cambiare di nuovo il file jsf. Il caso d'uso è che tutto ciò che è maggiore di zero va bene ma non il numero negativo.

Qualche idea?

+0

Questo può essere di interesse: http: //www.kianworknotes.com/2013/06/jsf-number-validator-with-regular.html –

+0

Sì utilizzando validateDoubleRange con minimo = 0 consentirebbe anche zero che è w cappello non mi piace neanche ... –

+0

Ok pls controlla la mia risposta qui sotto e fammi sapere (scusa non ho potuto testarlo). – anubhava

risposta

6

Basta creare un validatore personalizzato, ad esempio una classe che implementa javax.faces.validator.Validator e annotarlo con @FacesValidator("positiveNumberValidator").

Implementare il metodo validate() in questo modo:

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

e utilizzarlo nella pagina facelets in questo modo:

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

Link utile: http://www.mkyong.com/jsf2/custom-validator-in-jsf-2-0/

+0

Grazie questa è stata la mia soluzione! –

Problemi correlati