Custom Converter dalam Java Server Faces 2


Java

Java

Salah satu kelebihan JSF (Java Server Faces) dibandingkan JSP (Java Server Pages) adalah, JSF memiliki custom converter, yaitu merupakan mekanisme untuk melakukan conversi tipe data secara otomatis. Dalam web, seluruh input data form itu berupa String, sedangkan kenyataannya tidak demikian, misal ada tipe data Integer, Boolean atau ada yang lebih kompleks seperti URL dan lain-lain. Pada artikel ini saya akan bahas tentang cara membuat Custom Converter untuk melakukan proses konversi nilai dari input form html (String) menjadi URL (java.net.URL).

Membuat Kelas Converter

Hal pertama yang perlu kita lakukan untuk melakukan proses konversi adalah membuat kelas converter, dimana pada artikel ini saya membuat sebuah kelas converter untuk melakukan konversi dari String ke URL.

package khannedy.composite.converter;

import java.net.MalformedURLException;
import java.net.URL;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

@FacesConverter("khannedy.URLConverter")
public class URLConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context,
            UIComponent component, String value) {
        try {
            URL url = new URL(value);
            return url;
        } catch (MalformedURLException ex) {
            throw new ConverterException(ex.getMessage(), ex);
        }
    }

    @Override
    public String getAsString(FacesContext context,
            UIComponent component, Object value) {
        URL url = (URL) value;
        return url.toString();
    }
}

Untuk membuat kelas converter, maka kita harus mengimplementasi interface Converter (javax.faces.convert.Converter) dan menandainya dengan annotation @FacesConverter (javax.faces.convert.FacesConverter) dan beri nama ID pada annotation tersebut dimana pada kode diatas saya memberi ID untuk konverter tersebut dengan nama “khannedy.URLConverter“.

Menggunakan Custom Converter

Setelah membuat kelas converter, saatnya menggunakannya dalam halaman JSF. Hal pertama yang harus dilakukan adalah membuat ManageBean terlebih dahulu, dimana ManageBean-nya harus memiliki atribut URL (java.net.URL).

package khannedy.composite.bean;

import java.io.Serializable;
import java.net.URL;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;

@Named(value = "URLBean")
@SessionScoped
public class URLBean implements Serializable{

    private static final long serialVersionUID = 1L;

    private URL url;

    public URL getUrl() {
        return url;
    }

    public void setUrl(URL url) {
        this.url = url;
    }
}

Dan untuk menggunakan kelas converter yang telah dibuat, kita hanya perlu menggunakan tag <f:converter converterId=”id”/>  dimana id converter adalah ID yang telah ditambahkan pada @FacesConverter pada kelas converter yang telah dibuat.

<?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>URL Validator</title>
    </h:head>
    <h:body>
        <h:form id="url">
            <h:panelGrid columns="3">
                <h:outputLabel for="url" value="URL :"/>
                <h:inputText id="url" value="#{URLBean.url}">
                    <f:converter converterId="khannedy.URLConverter"/>
                </h:inputText>
                <h:message for="url"/>
                <h:outputText/>
                <h:commandButton value="Submit"/>
                <h:outputText/>
            </h:panelGrid>
        </h:form>
    </h:body>
</html>

Selesai 😀

Iklan

Satu pemikiran pada “Custom Converter dalam Java Server Faces 2

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