Есть ли какой-нибудь компонент JSF Select Time Zone? - PullRequest
1 голос
/ 26 сентября 2011

Я искал это некоторое время и не нашел его. Это удивительно сложно, как показано в этом старом IceFaces учебнике .

Необходим компонент UIInput, который устанавливает свойство java.util.TimeZone , позволяя пользователю выбирать его на карте или в списке на экране. Прежде чем я погрузлюсь, чтобы написать один для себя - кто-нибудь знает о доступном компоненте, который делает это?

1 Ответ

4 голосов
/ 26 сентября 2011

Используйте <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), который должен быть довольно простымдостаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...