2013-08-06 35 views
8

Làm cách nào để bạn tạo trình xác thực trong JSF để xác thực văn bản đầu vào nếu nó lớn hơn 0?JSF lớn hơn số không hợp lệ

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

Tôi có mã ở trên nhưng tôi không chắc chắn nếu điều này là tối ưu. Mặc dù nó hoạt động nhưng nếu một số khác nhỏ hơn số này là cần thiết thì tôi cần phải thay đổi tệp jsf một lần nữa. Trường hợp sử dụng là bất kỳ thứ gì lớn hơn 0 đều không sao nhưng không phải là số âm.

Mọi suy nghĩ?

+0

này có thể quan tâm: http: //www.kianworknotes.com/2013/06/jsf-number-validator-with-regular.html –

+0

Có sử dụng validateDoubleRange với giá trị nhỏ nhất = 0 sẽ cho phép không cũng là w mũ tôi không thích hoặc là ... –

+0

Ok xin vui lòng kiểm tra câu trả lời của tôi dưới đây và cho tôi biết (xin lỗi không thể kiểm tra nó). – anubhava

Trả lời

6

Chỉ cần tạo trình xác thực tùy chỉnh, tức là một lớp đang triển khai javax.faces.validator.Validator và chú thích nó bằng @FacesValidator("positiveNumberValidator").

Thực hiện phương pháp validate() như thế này:

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

Và sử dụng nó trong các trang Facelets như thế này:

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

liên kết hữu ích: http://www.mkyong.com/jsf2/custom-validator-in-jsf-2-0/

+0

Cảm ơn đây là giải pháp của tôi! –

Các vấn đề liên quan