那里有JSF Select Time Zone组件吗?

时间:2011-09-25 22:33:01

标签: jsf-2

我一直在寻找这个并没有找到它。令人惊讶的复杂,如旧的IceFaces tutorial所示。

我们需要的是一个UIInput组件,它将设置 java.util.TimeZone 属性,允许用户从地图或屏幕上的列表中选择它。在我潜入为自己写一个之前 - 有没有人知道这样做的可用组件?

1 个答案:

答案 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)