【问题标题】:Primefaces Schedule - how to format column headersPrimefaces Schedule - 如何格式化列标题
【发布时间】:2012-10-17 02:11:11
【问题描述】:

我正在尝试使用p:schedule,但列标题显示的格式如下:EEE MM/dd,我真的需要切换到EEE dd/MM

研究 primefaces 论坛和谷歌项目,我遇到了这个(和其他几个线程):http://code.google.com/p/primefaces/issues/detail?id=2546

这似乎解决了问题,但我不知道如何使用它来解决问题。

我不确定这个问题是否重复(因为这个问题已经存在了几年了)但是搜索 SO 没有任何结果。

那么,如何更改列标题的格式?

我将展示示例导入到我的项目中,到目前为止,我的日程安排事件的配置是:

<p:schedule value="#{scheduleController.eventModel}"
widgetVar="myschedule" view="agendaWeek"     allDaySlot="false"
slotMinutes="15" firstHour="7" showWeekends="FALSE"
leftHeaderTemplate="prev,next" rightHeaderTemplate=""
minTime="7am" maxTime="21pm" timeFormat="dd/MM hh:mm"
axisFormat="HH">

使用primefaces 3.3.1

【问题讨论】:

标签: java jsf primefaces


【解决方案1】:

在 primefaces 的最新版本中,这个问题现在得到了解决。 您只需在 p:schedule 标记中添加 columnFormat="ddd D/M",如下所示:

<p:schedule value="#{scheduleController.eventModel}"
widgetVar="myschedule" view="agendaWeek"     allDaySlot="false"
slotMinutes="15" firstHour="7" showWeekends="FALSE"
leftHeaderTemplate="prev,next" rightHeaderTemplate=""
minTime="7am" maxTime="21pm" timeFormat="dd/MM hh:mm"
axisFormat="HH" columnFormat="ddd D/M">

【讨论】:

  • 未来是一件了不起的事情,不是吗?和错误票。 XD
【解决方案2】:

我通过破解“columnFormat”属性解决了这个问题。

columnFormat="month:'ddd', week:'dd/MM', day:'dd/MM/yyyy'}, titleFormat: {day: 'dddd, dd \'de\' MMMM \'de\' yyyy'"

【讨论】:

    【解决方案3】:

    我解决了它破解来自 primefaces (scheduler.js) 的 javascript。只需在您的页面中添加此代码即可编辑日期格式:

    if (PrimeFaces.widget.Schedule != undefined) {
    PrimeFaces.widget.Schedule.prototype.init = function() {
         this.cfg.titleFormat = {
                month: 'MMMM yyyy',
                week: "De d MMM [ yyyy]{ 'à' d [ MMM] 'de' yyyy}",
                day: 'dddd, d MMM , yyyy'
         };          
         this.cfg.columnFormat = {
                month: 'ddd',
                week: 'ddd d/M',
                day: 'dddd M/d'
         };
         if(this.jq.is(':visible')) {
            this.jqc.fullCalendar(this.cfg);
            return true;
         }  else {
            return false;
         }
    };
    

    }

    【讨论】:

      【解决方案4】:

      一个非常粗略的解决方案,我通过劫持调度页面的输出来修复这些标题,更改调度调用的 javascript 代码以便将格式放入其中:

      我使用了Jeremy Stein (click to go to question) 编写的类(是的,HTML 输出上的正则表达式,bash 上),并放置了一个过滤器,监听带有时间表的特定页面的输出。

      我使用了以下模式和替换字符串:

      Pattern. compile("timeFormat:(.*?), behaviors");
      
      replaceString= "timeFormat: $1, columnFormat : { month : 'ddd' , week : 'ddd d/M' , day : 'dddd d/M' }, behaviors"
      

      通过在输出中插入 columnFormat 属性,它开始正确呈现标题。

      我希望看到另一种方法来解决 Primefaces 不愿实施此功能的情况。

      【讨论】:

      • 我无法摆脱自己正在犯下某种暴行的感觉……但也许这是本周令人毛骨悚然的气氛。
      • 今天你可以使用p:schedule的extender属性来扩展配置。
      • @user993553 对于这些“实时”API,它必然会发展。问答仍然是发布时现实的快照。很高兴他们正在解决这些问题。
      猜你喜欢
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多