Richfaces日历最小和最大日期

时间:2009-12-16 09:47:35

标签: jsf richfaces

我的问题是让RichFaces日历限制允许选择的日期 由用户。

假设我想只允许用户选择本月的日期和下个月的日期。

我使用了preloadDateRangeStart和preloadDateRangeEnd属性,但他们什么也没做。

我创建了自己的CalendarDataModel,它使用preloadDateRangeStart和preloadDateRangeEnd并启用项目,但屏幕上的日历只允许选择当前月份的日期。请注意,preloadDateRangeStart是今天的日期,preloadDateRangeEnd是今天的日期再加上2个月。

我肯定在这里遗漏了一些东西。 有人能帮帮我吗?

2 个答案:

答案 0 :(得分:3)

使用isDayEnabled="isDayEnabled"属性,其中值(isDayEnabled)是您应定义的javascript函数,格式为

function isDayEnabled(day) {
}

有关详细信息,请参阅richfaces demo

如果要在服务器端添加验证,请使用自定义JSF验证器,或使用Hibernate Validator注释(请参阅richfaces - bean验证器)

答案 1 :(得分:1)

我弄清楚它是如何工作的,所以在这里:

我创建了一个实现CalendarDataModel的类。

我没有使用preloadDateRangeStartpreloadDateRangeEnd属性,因为CalendarDataModel只关注preloadDateRangeStartpreloadDateRangeEnd之间的范围,以防您指定它们

我的CalendarDataModel禁用其日期超出我在属性文件中指定的日期范围的日历项目,我在CalendarDateModel中使用该日历项目以确定该项目的日期是否不在该范围之间禁用它。

所以现在它很棒。这是标签:

<a4j:outputPanel id="myCal" layout="block">
   <rich:calendar cellHeight="30px" cellWidth="30px" 
       dataModel="#{MyCalendarDataModel}" datePattern="dd/MM/yyyy" mode="ajax"
       style="width:200px" value="#{MyPage.theDate}"/>
 </a4j:outputPanel>

我也试过你的解决方案。它有效,但客户端有点乱。

再次感谢你