Custom Validator dalam Java Server Faces 2


Java

Java

Salah satu hal yang sangat memudahkan untuk para pengguna Java Server Faces adalah kemudahan ketika melakukan proses validasi terhadap input yang dimasukkan oleh pengguna website. JSF mendukung pembuatan custom validator, dimana kita dapat membuat validator yang sesuai dengan yang kita inginkan.

Secara default, JSF memiliki validator untuk melakukan validasi seperti angka, tanggal, panjang input, dan lain-lain. Namun JSF tidak memiliki validator untuk melakukan proses validasi terhadap hal yang spesifik, misal validator untuk memvalidasi bahwa input masuk NIM harus sesuai dengan ketentuan Universitas 😀 Oleh karena itu, mau tidak mau, kita harus membuatnya secara manual. Namun pembuatan validator di Java Server Faces sangatlah mudah.

Membuat Kelas Validator

Validator dalam JSF direpresentasikan oleh sebuah interface Validator (javax.faces.validator.Validator), sehingga jika kita akan membuat Validator baru, maka kita harus membuat kelas yang mengimplementasi interface Validator tersebut. Misal saya akan membuat Validator untuk melakukan validasi Nim :

package khannedy.learning.faces.validator;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

@FacesValidator("NimValidator")
public class NimValidator implements Validator {

    private String message =
            "Nim tidak valid, harus terdiri dari 8 angka";

    @Override
    public void validate(FacesContext context,
            UIComponent component, Object value)
            throws ValidatorException {

        String nim = (String) value;

        if (!nim.matches("\\d{8}")) {
            throw new ValidatorException(new
                    FacesMessage(message, message));
        }

    }
}

Kelas Validator ditandai dengan annotation @FacesValidator dimana dalam annotation tersebut harus dituliskan id Validatornya, pada kelas diatas saya memberinya dengan id “NimValidator”.

Menggunakan Custom Validator

Untuk menggunakan kelas Validator yang telah kita buat, maka kita dapat menggunakan tag <f:validator validatorId=”id”/> dimana id tersebut merupakan id Validator yang telah kita buat. Tag <f:validator/> tersebut harus disimpan dalam sebuah input. Misal :

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form id="nim">
            <h:panelGrid columns="3">
                <h:outputLabel for="nim" value="Nim"/>
                <h:inputText id="nim">
                    <f:validator validatorId="NimValidator"/>
                </h:inputText>
                <h:message for="nim"/>
                <h:outputText/>
                <h:commandButton value="Validate"/>
                <h:outputText/>
            </h:panelGrid>
        </h:form>
    </h:body>
</html>

Selamat mencoba 😀

Iklan

2 pemikiran pada “Custom Validator dalam Java Server Faces 2

  1. Thx ko, btw kalo stiap custom validator pengin kita taro dibawah satu xml namespace tertentu gmana ya ? misalnya di halaman htmlnya tar ckp manggil xmlns eko:”eecchhoo.wordpress.com”.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s