我想建立一个工作日选择菜单。工作日初始化为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函数来检索label属性中的本地化工作日。
有没有办法将它与日期模式一起使用?
答案 0 :(得分: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);
}