rich:日历忽略选择后星期几的格式模式

时间:2012-11-19 21:17:19

标签: jsf-2 richfaces simpledateformat

作为一部分,我使用的是具有datePattern定值的组件,如下所示:

<rich:calendar id="effectiveDate" 
value="#{itemBean.effectiveDate}" 
datePattern="EEEE, MM/dd/yyyy" />

因此,当我加载表单时,来自请求的itemBean的现有effectiveDate正确显示在文本字段中。

问题:

  1. 单击日历图标时,文本字段的内容将消失。因此,如果我没有从日历弹出窗口中选择任何内容,则文本字段仍为空。

  2. 选择日期时,它会显示(例如):

  3. EEEE,11/19/2012 因此,工作日不能正常显示。

    注意到如果没有指定工作日(datePattern的EEEE部分),则不会出现上述任何问题。

    选择后是否有某种特定方式显示工作日?

    我在RichFaces 4.2.2上。

    谢谢!

1 个答案:

答案 0 :(得分:2)

我认为这是<rich:calendar>的已知问题。我对此并不了解。
不过试试这个,

<rich:calendar id="effectiveDate" value="#{itemBean.effectiveDate}" onchanged="formatCalendarString(event, this);" datePattern="EEEE, MM/dd/yyyy" />

<head></head>个标签内放置此内容。

<head>
    <script>
        function formatCalendarString(event, cal) {
            var date = new Date(Date.parse(event.rich.component.getSelectedDate()));
            var weekdays=new Array(7);
            weekdays[0]='Sunday';
            weekdays[1]='Monday';
            weekdays[2]='Tuesday';
            weekdays[3]='Wednesday';
            weekdays[4]='Thursday';
            weekdays[5]='Friday';
            weekdays[6]='Saturday';

            var day = weekdays[date.getDay()];
            if(typeof(day) !== 'undefined') {
              var formattedDate = (day + ', ') + event.rich.component.getSelectedDateString().substring(6);
              cal.value = formattedDate;
            }
        }
    </script>
</head>