Tuesday, August 6, 2013

Implementing Custom converters in Java Server Faces(JSF)

Custom converters :-
Java Server Faces provides set of standard converters but in some cases we need to implement our own converters.
We want to be date in a particular format or emailId should be of specific format etc.
We can implement this by using java script but if java script is disabled? So its always recommended to perform server side validations.

Steps to be followed for creating custom converters :-
  1. Create a Java class
  2. Implement javax.faces.convert.Converter
  3. Override the unimplemented methods getAsObject(FacesContext,UIComponent,String),getAsString(FacesContext,UIComponent,String)
Example :-

public class CustomConverter implements Converter {

@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2)
throws ConverterException {
// TODO Auto-generated method stub
return null;
}

@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2)
throws ConverterException {
// TODO Auto-generated method stub
return null;
}

}


As we get data from web page in form of String all the conversion
is done in getAsObject();

4.Registering custom converter class in faces-config.xml
<converter>
<description>Removes white spaces in the input</description>
<display-name></display-name>
<converter-id>cc</converter-id>
<converter-class>CustomConverter</converter-class>
</converter>

This can be done by component tab in faces-config.xml instead of writing the above lines.

The above converter can be implemented by using
1.Converter attribute :-
<h:inputText id="number" value="#{loginBean.num}" converter="cc">
</h:inputText>

  1. Using Converter tag nested inside the component tag
<h:inputText id="number" value="#{loginBean.num}">
<f:converter id="cc"/>
</h:inputText>


Happy Learning

Please provide your valuable comments on this article and share it across your network.


No comments:

Post a Comment

Like and Share