JSF Interview questions

Q: Which standard converters have their own tags?
DateTimeConverter and NumberConverter are two standard converters that have their own tags convertDateTime and convertNumber respectively that help configuring the format of the component data by configuring tag attributes.
DateTimeConverter : A component data can be converted to a Date object using convertDateTime tag within the component tag like,
<h:inputText value="#{Bean.RegisterDate}">
<f:convertDateTime pattern="MMM,dd,YYYY" />
</h:inputText>

Q: NumberConverter : Converter for dealing with numbers such as type of number, maximum integer digits, currency symbol etc.

<h:inputText id="it" value="#{Bean.value}">
<f:convertNumber maxFractionDigits="3"
type="currency"
currencySymbol="$"
maxIntegerDigits="4" />
</h:inputText>

Q: What are the ways of using standard converters of JSF?

Standard converters other than the two which have their own tags (DateTimeConverter and NumberConverter) can be used in one of the following three ways. The first one converts the model value of the component and the other two ways convert the component's local value.
a. Bind UI Component to Backing Bean Property :
Make sure that the component has its value bound to a backing bean property of the same type as the converter. For example, converting component data to a float number requires binding the component to the property like :
Float value = 0.0;
public Float getValue(){ return value;}
public void setValue(Float value) {this.value = value;}
b. Use “converter” attribute on the UI Component :
Using the converter attribute of the component tag. Just specify the fully qualified class name or ID of the converter in the converter attribute. If the component is not bound to a bean property then this option can be used. For example,
<h:inputText converter="javax.faces.Integer" />
c.
d. Use <f:converter> Tag with ConverterId Attribute :
Using converter tag within the component tag and refer the converter by specifying the ID of the converter in the convertId attribute. For example:
<h:inputText value="#{Bean.Value}" />
<f:converter converterId="Float" />
</h:inputText>

Q: When to create and use custom convertors?
The main reasons behind creating our converter are :
a. When we want to convert a component's data to a type other than a standard type
b. When we want to convert the format of the data.
Read more at http://www.roseindia.net/jsf/customconverter.shtml

Q: 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 :
a. Create a class that implements javax.faces.converter.Converter interface.
b. Import necessary packages and classes.
c. 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.
d. 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).
e. 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.
f. Use <h:message> tag to display the error message.
Read more at http://www.roseindia.net/jsf/customconverter.shtml
Q: 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 :
a. 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>
b. Use this converter in the view page as :
<h:inputText id="input_text">
<f:converter converterId="ms_Converter" />
</h:inputText>
c.
d. 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>
e. 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>
SHARE

    Blogger Comment
    Facebook Comment

0 comments :

Post a Comment