Series JSF – Phần 9 Các thẻ (tag) Validator, validate trong JSF Framework

Series JSF – Phần 9 Các thẻ (tag) Validator, validate trong JSF Framework.

Tương tự khả năng convert dữ liệu, JSF cũng cung cấp khả năng validate (kiểm tra tính hợp lệ) của dữ liệu bên trong chính các UI component. Những thẻ này  có thẻ validate chiều dài, loại dữ liệu hoặc bạn cũng có thể tự định nghĩa kiểu validate cho riêng mình.

Để sử dụng những thẻ này chúng ta cần khai báo namespaces của nó:

<html 
   xmlns = "http://www.w3.org/1999/xhtml" 
   xmlns:f = "http://java.sun.com/jsf/core">

JSF cung cấp một só thẻ validator sau:

  • f:validateLength (validate chiều dài của tex
  • f:validateLongRange (validate giá trị của số nguyên)
  • f:validateDoubleRange (validate giá trị số thực);
  • f:validateRegex (validate theo mẫu pattern)
  • Hoặc bạn có thể tự tạo các thẻ validator theo ý của mình.

1. Thẻ f:validateLength

Ví dụ: đoạn code dưới đây validate dữ liệu nhập vào phải có ít nhất 5 ký tự và nhiều nhất 8 ký tự và không được phép để trống.

<h:inputText id="input-name" value="#{helloBean.name}" label="name" required="true">
  <f:validateLength minimum="5" maximum="8" />
</h:inputText>
<h:message for="input-name" style="color: red"/>

Trong đó:

  • Tham số required = “true” validate bắt buộc phải nhập.
  • h:message for=”input-name” dùng để hiển thị message lỗi cho input có id =”input-name”

2. Thẻ f:validateLongRange và f:validateDoubleRange

Ví dụ: đoạn code dưới đây yêu cầu nhập tuổi từ 1-50, nhập rank từ 1.0-10

Age:
<h:inputText id="input-age" value="#{helloBean.age}" label="age" required="true">
  <f:validateLongRange minimum="1" maximum="50" />
</h:inputText>
<h:message for="input-age" style="color: red" /><br/>


Rank:
<h:inputText id="input-rank" value="#{helloBean.rank}" label="rank" required="true">
  <f:validateDoubleRange minimum="1.0" maximum="10.0" />
</h:inputText>
<h:message for="input-rank" style="color: red" /><br/>

3. Thẻ: f:validateRegex

Ví dụ: đoạn code dưới đây yêu cầu nhập đúng định dạng email:

Email:
<h:inputText id="input-email" value="#{helloBean.email}" label="email" required="true">
  <f:validateRegex
  pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
</h:inputText>
<h:message for="input-email" style="color: red" /><br/>

4. Tạo thẻ validator (customer validator)

Định nghĩa validator qua class Java bằng cách implements Validator.

Ví dụ ở đây mình tạo class IdValidator thực hiện validate dữ liệu yêu cầu bắt buộc phải bắt đầu bằng “id”

@FacesValidator("stackjava.com.validatortag.idValidator")
public class IdValidator implements Validator {

  public void validate(FacesContext facesContext, UIComponent component, Object value) throws ValidatorException {
    String password = value.toString();

    if (!password.startsWith("id")) {
      FacesMessage msg = new FacesMessage("Password validation failed", "Invalid Password format");
      msg.setSeverity(FacesMessage.SEVERITY_ERROR);
      throw new ValidatorException(msg);
    }

  }
}
id:
<h:inputText id="input-id" value="#{helloBean.id}" label="id"
  required="true">
  <f:validator validatorId="stackjava.com.validatortag.idValidator" />
</h:inputText>
<h:message for="input-id" style="color: red" />
<br />

 

Kết quả:

Trường hợp để trống:

Trường hợp nhập sai định dạng

Trường hợp nhập đúng định dạng

Các thẻ (tag) Validator, validate trong JSF Framework

Okay, Done [wp-svg-icons icon=”lightning” wrap=”i”]

Các bạn có thể download code đầy đủ của ví dụ trên tại đây

Phần tiếp theo chúng ta sẽ tìm hiểu về Ajax trong JSF: https://stackjava.com/jsf/series-jsf-phan-10-xu-ly-ajax-trong-jsf-framework.html

Thanks các bạn đã theo dõi bài viết!

stackjava.com