JSF: Setting itemLabel with selectItems

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

 

Do You Need More Details?

  • Do you need to connect to a database?
  • Display SQL results in a HTML table?
  • Perform SQL insert, updates and deletes?
I have a premium course that shows you how to complete all of these tasks.
  • Database Integration with JDBC
  • Displaying Data in Lists and Tables
  • Validating HTML Forms
  • Implementing Business Logic with Managed Beans
  • Deploying applications with WAR Files
Read more about the premium course at http://www.luv2code.com/jsf-for-beginners

Follow luv2code with the links below:

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

Did you like my blog post?

Signup now and receive an email when I publish new luv2code content.

I will never give away, trade or sell your email address. You can unsubscribe at any time.

Share

Leave a Reply