Используйте <h:selectOneMenu>
для представления раскрывающегося списка.Используйте <f:selectItems>
, чтобы указать E[]
, List<E>
, SelectItem[]
или List<SelectItem>
в качестве значения.
Вот как это может выглядеть в простейшей форме:
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
private String timeZoneID; // +getter +setter
private String[] timeZoneIDs; // +getter only
@PostConstruct
public void init() {
timeZoneIDs = TimeZone.getAvailableIDs();
// You may want to store it in an application scoped bean instead.
}
public void submit() {
System.out.println("Selected time zone: " + TimeZone.getTimeZone(timeZoneID));
}
// ...
}
с этим видом:
<h:form>
<h:selectOneMenu value="#{bean.timeZoneID}" required="true">
<f:selectItem itemValue="#{null}" itemLabel="Select timezone..." />
<f:selectItems value="#{bean.timeZoneIDs}" />
</h:selectOneMenu>
<h:commandButton value="submit" action="#{bean.submit}" />
<h:messages/>
</h:form>
Если вы хотите сделать его полноценным TimeZone
свойством, вам нужно будет ввести @FacesConverter(forClass=TimeZone.class)
, который должен быть довольно простымдостаточно.