JSF provides UI components for drop-down lists. Drop-down lists are called selectOneMenu in JSF.

When you use the components, you may have the requirement to use different values for the itemLabel and itemValue. You can accomplish this by making use of a Map collection (java.util.Map). The Map collection is a collection of key-value pairs.

In JSF, you provide a reference to a Map and then JSF will build the list. It will use the Map key for the itemLabel and the Map value for the itemValue.

When the user selects an item, then the selected item’s value will be set on the bean.

Ok, enough talking, let’s look at an example.

In this example, I will present the user with a JSF form. The form will read the user’s first name, last name and country.

form-1

JSF Bean Code

The country drop down list is populated with a Map from the bean. The bean will define a Map collection that uses the Map key for the itemLabel and the Map value for the itemValue. Here’s the code snippet

JSF Page

Now the JSF page can make use of this bean to get the itemLabel and itemValues. Remember JSF will use the map key as the itemLabel and the map value as the itemValue

Here’s the snippet of code for the JSF page.

So when the form is displayed, the user will set the map keys in for the item label. For example, the user will see the full name of the country as shown below:

form-2

Then once they submit the form, JSF will store the value of the selected item into the bean.

Here’s a snippet of code from the response form that shows the user’s selected value:

So if the user selects “Germany”, then JSF will store the value of “DEU” for the bean property studentTwo.country.

final

Summary

Well, that covers how you can provide different itemLabels and itemValues for a drop-down list.

DOWNLOAD SOURCE CODE

 

[includeme file=”wp-content/uploads/2015/05/jsf-premium-blurb.html”]

Follow luv2code with the links below:

– Website: https://luv2code.com
– YouTube: http://goo.gl/EV6Kwv
– Twitter: http://goo.gl/ALMzLG
– Facebook: http://goo.gl/8pDRdA