Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 选择一个带有日期的菜单,使用不同的值和标签模式_Jsf_Date_Converter_Selectonemenu - Fatal编程技术网

Jsf 选择一个带有日期的菜单,使用不同的值和标签模式

Jsf 选择一个带有日期的菜单,使用不同的值和标签模式,jsf,date,converter,selectonemenu,Jsf,Date,Converter,Selectonemenu,我想建立一个工作日选择菜单。工作日初始化为1970年的第一个工作日 转换器将值转换为日期。但是我想使用java日期模式“EEEE”显示全文工作日 这是行不通的。现在,我正在使用一个自定义EL函数来检索label属性中的本地化工作日 有没有一种方法可以将它与日期模式一起使用 转换器实际上不会应用在选项标签上。它仅应用于选项值。它应该与EL函数配合使用。假设您有一个列表作为可用项,而日期作为所选项,则应执行以下操作: <f:selectItems value="#{bean.weekday

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

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


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


有没有一种方法可以将它与日期模式一起使用

转换器实际上不会应用在选项标签上。它仅应用于选项值。它应该与EL函数配合使用。假设您有一个
列表
作为可用项,而
日期
作为所选项,则应执行以下操作:

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

顺便说一句,它有这个功能。

这种奇怪方法的原因是你想本地化工作日名称,对吗?是的,但是“05/01/1970”是一个日期,应该稍后存储在数据库中以便工作日检索哦,好的。那么使用一些(现有的!)常量是不可能的,对吗?你是说日历日常量?我认为这是不可能的。我正在尝试为商店开门时间存储一个通用的工作日时间范围。我有两个日期字段“开始”和“结束”,他们的工作日总是相等的,就像“05/01/1970”,在我使用的表单实体中,有一些逻辑来实现这种相等。(有一个“day”getter和setter,但没有day属性,它只设置开始日期和结束日期属性,“start”和“end”只设置小时和分钟)不,我的意思是。谢谢,是的,该函数比我的平日函数有用得多。使用el函数替换#{bean.weekdays}有什么缺点吗不,这更像是一个设计问题。如果bean方法本质上是一个实用方法(它是无状态的,因此可以安全地声明为
静态的
),并且由视图调用,那么它毕竟不应该是一个托管bean方法。
<f:selectItems value="#{bean.weekdays}" var="day" 
    itemValue="#{day}" itemLabel="#{util:formatDate(day, 'EEEEE')}" />
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);
}