我一直在寻找这个并没有找到它。令人惊讶的复杂,如旧的IceFaces tutorial所示。
我们需要的是一个UIInput组件,它将设置 java.util.TimeZone 属性,允许用户从地图或屏幕上的列表中选择它。在我潜入为自己写一个之前 - 有没有人知道这样做的可用组件?
答案 0 :(得分:4)
使用<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)
。