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

Format month name of <rich:calendar> as MMM instead of MMMM

如何将 <rich:calender> 显示的月份从 "April" 更改为 3 个字符 "Apr"?

这是不支持的,如果你想改变它,你需要覆盖创建元素的 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 负责创建标签,它return是这个对象:

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

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