Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Calendar 奇富:日历错误_Calendar_Richfaces - Fatal编程技术网

Calendar 奇富:日历错误

Calendar 奇富:日历错误,calendar,richfaces,Calendar,Richfaces,我正在使用一个启用手动建议的富日历控件,以及一个日期字符串“dd-MMM-yyyy”。比如: <rich:calendar id="calStartDateTime" label="Test Calendar" popup="true" datePattern="dd MMM yyyy" /> 我们的质量保证部门发现了一个奇怪的小怪癖。如果您在所有大写字母中键入月份的日期,如“2011年3月15日”,然后弹出日历控件,日历将跳出。该月显示“未定义”,该年显示“未定义”,该月的

我正在使用一个启用手动建议的富日历控件,以及一个日期字符串“dd-MMM-yyyy”。比如:

<rich:calendar id="calStartDateTime" label="Test Calendar" 
popup="true" datePattern="dd MMM yyyy" />

我们的质量保证部门发现了一个奇怪的小怪癖。如果您在所有大写字母中键入月份的日期,如“2011年3月15日”,然后弹出日历控件,日历将跳出。该月显示“未定义”,该年显示“未定义”,该月的天数从1到42填写


我在任何地方都没有发现这个bug,但我可能没有正确地搜索它。有人能提出修复或解决方案吗?我们正在使用RichFaces 3.3.1.GA,现在很难改变这一点。

好的,我终于找到了答案。RichFaces 3.3.1的calendar.js中包含的JavaScript中有一个bug。函数的作用是:使用从日期模式和短月份列表(一月、二月、三月……)生成的正则表达式,将输入字符串拆分为年、月和日。但是,它以不区分大小写的模式运行RE。例如,月片可以返回为“MAR”。然后它调用getMonthByLabel()函数将月份转换为数字,但是字符串比较区分大小写,因此我们无法解析月份,这不会导致parseDate()函数出现一般性故障,因此一切都不正常

看起来它已经被RichFaces 3.3.3.最终解决了

3.3.1.GA:

Richfaces.Calendar.getMonthByLabel = function(monthLabel, monthNames) {
var i = 0;
while (i < monthNames.length)
    if (monthNames[i] == monthLabel)
        return i;
    else
        i++;
};
Richfaces.Calendar.getMonthByLabel=函数(monthLabel,monthNames){
var i=0;
而(i
3.3.3.最终:

Richfaces.Calendar.getMonthByLabel = function (monthLabel, monthNames) {
var toLowerMonthLabel = monthLabel.toLowerCase();
var i = 0;
while (i < monthNames.length) {
    if (monthNames[i].toLowerCase() == toLowerMonthLabel) {
        return i;
    }

    i++;
}
};
Richfaces.Calendar.getMonthByLabel=函数(monthLabel,monthNames){
var toLowerMonthLabel=monthLabel.toLowerCase();
var i=0;
而(i
如果您输入2011年3月15日
,该错误不会出现?不,mar,仍然会导致该错误,除mar(例如,mar,mar,mar)之外的任何混合情况都会导致该错误。所有月份都是如此,而不仅仅是三月。但是,拼写错误的月份,或者在字符串中放入任何其他垃圾,只会导致字符串被清除,日历会弹出今天的月份。这很奇怪。嗨,格雷格,我试着在rich:rich:calendar中使用日期模式“MMM”“yy”,但它不起作用。我的richfaces版本是3.3.3.Final。有什么想法吗?谢谢