2

我想建立一个工作日选择菜单。工作日初始化为 1970 年的第一个工作日。

转换器将值转换为日期。但我想使用 java 日期模式“EEEE”显示全文工作日。

<h:selectOneMenu id="day" label="#{msg.day_u}" required="true" value="#{date}">
    <f:convertDateTime pattern="dd/mm/yyyy"/>
    <f:selectItem itemValue="05/01/1970" itemLabel="display Monday using pattern"/>
    <!-- other weekdays -->
</h:selectOneMenu>

这是行不通的。现在我正在使用自定义 EL 函数来检索标签属性中的本地化工作日。

有没有办法将它与日期模式一起使用?

4

1 回答 1

2

转换器确实不会应用在选项标签上。它仅适用于期权价值。它应该可以与 EL 函数一起正常工作。假设您有一个List<Date>可用项目和Date选定项目,那么应该这样做:

<f:selectItems value="#{bean.weekdays}" var="day" 
    itemValue="#{day}" itemLabel="#{util:formatDate(day, 'EEEEE')}" />

formatDate()看起来像这样

public static String formatDate(Date date, String pattern) {
    if (date == null) {
        return null;
    }

    if (pattern == null) {
        throw new NullPointerException("pattern");
    }

    Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
    return new SimpleDateFormat(pattern, locale).format(date);
}

OmniFaces正好有这个功能。

于 2012-04-26T03:34:18.477 回答