<h:selectOneListbox value="#{addDepartmentForm.country}" size="1" id="country"> <f:selectItem itemValue="-1" itemLabel=""/> <s:selectItems value="#{countries.allCountries_Dropdown}" var="c" label="#{c.name}"/> <s:convertEntity/> </h:selectOneListbox>
@Name("addDepartmentForm") @Scope(ScopeType.EVENT) public class AddDepartmentForm implements Serializable { private Country country; // ... getters & setters }
@Name("countries") @Scope(ScopeType.PAGE) public class Countries implements Serializable { @In private EntityManager entityManager; public List<Country> getAllCountries_Dropdown() { return entityManager.createQuery("select c from Country c").getResultList(); } }
@Entity @Table(name="COUNTRIES") public class Country { @Id @Column(name="COUNTRY_ID") private String id; @Column(name="COUNTRY_NAME") private String name; // ... getters & setters }
If you look at the code, you'll see that I want to have a drop-down list of countries with a blank item on the top (so I need f:selectItem).The entity Country has a string id. But if I have a string value (which cannot be converted to a number) for the itemValue of the f:selectItem, I get a NumberFormatException for that non-number itemValue. Right now, I have to put a number there (which doesn't make sense, but doesn't cause exceptions).
What's the right way to add a blank item on the top of the drop-down list like mine?
Thank you.
noSelectionLabel on s:selectItem?