将<rich:calendar>的月份名称格式化为MMM而不是MMMM

时间:2016-04-19 11:47:54

标签: jsf calendar richfaces date-format

Sample Rich Calender

如何将<rich:calender>显示的月份从“四月”更改为3个字符“四月”?

1 个答案:

答案 0 :(得分:0)

不支持,如果你想改变它,你需要覆盖创建元素的JavaScript方法,如下所示:

var calendar = #{rich:component('calendar')};
var fn = calendar.calendarContext.currentMonthControl;

calendar.calendarContext.currentMonthControl = function(context) {
    var newDate = RichFaces.calendarUtils.formatDate(context.calendar.getCurrentDate(), "MMM, yyyy", context.monthLabels, context.monthLabelsShort);
    var markup = fn(context);
    markup.childs[0].value = newDate;
    return markup;
}

当然,您必须确保在重新呈现日历时,此代码也会被重新呈现。

大多数日历代码都是在客户端创建的。 (注意:这是内部的东西,你不应该知道它是如何工作的。)

calendar.calendarContext.currentMonthControl负责创建标签,它返回此对象:

{
    "tag":"div",
    "attrs":{
        /* event listeners, unimportant */
    },
    "childs":
        [{"value":"April, 2016"}]
}

您所做的是将原始方法替换为修改此对象的新方法。 RichFaces.calendarUtils.formatDate在原始函数中使用模式“MMMM,yyyy”调用,因此我们用不同的模式调用它,然后调用原始函数,替换文本,并返回修改后的对象。