JSF Interview Questions
- When to create and use custom convertors?
The main reasons behind creating our converter are :- When we want to convert a component's data to a type other than a standard type
- When we want to convert the format of the data.
Read more at http://www.roseindia.net/jsf/customconverter.shtml
- What are the steps of creating and using custom converter in our
application?
Creating and using a custom converter requires the following steps :Steps to follow :
- Create a class that implements javax.faces.converter.Converter interface.
- Import necessary packages and classes.
- Implement two abstract methods "getAsObject()", "getAsString()" provided by Converter interface. getAsObject() method converts the String (User Input) to Object and getAsString() method converts the Object to String to send back to the page.
- Register the converter class in configuration file (faces-config.xml) adding <converter> element. This element has child elements <converter-id> (name of the converter to be used while programming )and <converter-class> ( name of the converter class which we have created).
- Create view page where <f:converter> tag is used with attribute "converterId" which specifies the name of the converter which we have specified in <converter-id> element of <converter> element in "faces-config.xml" file.
- Use <h:message> tag to display the error message.
Read more at http://www.roseindia.net/jsf/customconverter.shtml
- What are the ways to register the custom converters in faces
context?
After creating custom converter class implementing Converter interface it needs to register in the faces context. This can be done in one of the two ways :
- Register the converter class with the id. This id is used in
<f:convertrer> tag in our view page (For example, JSP).
<converter>
<converter-id>ms_Converter</converter-id>
<converter-class>ms_Converter</converter-class>
</converter>Use this converter in the view page as :
<h:inputText id="input_text">
<f:converter converterId="ms_Converter" />
</h:inputText> - Register the converter class to handle all "Email" objects,
for example, automatically.
<converter> <converter-for-class>Email</converter-for-class> <converter-class>EmailConverter</converter-class>
</converter>If we register the EmailConverter class to handle all Email objects automatically then there is no need to use the <f:converter/> tag in view page. Use this converter as :
<h:inputText id="phone" value="#{Bean.email}">
</h:inputText>
- Register the converter class with the id. This id is used in
<f:convertrer> tag in our view page (For example, JSP).