在Calendar RichFaces中设置开始日期

时间:2014-02-26 17:35:46

标签: java jsf calendar richfaces

我需要在日历组件richfaces中设置开始日期。我的ManagedBean中有一个名为dateInitial的变量,它有一个日期(即2013-07-07是下限日期),我配置了我的日历组件:

 <rich:calendar id="dateToEvaluate" popup="true" 
    required="true" requiredMessage="Required Field"
    buttonIcon="#{request.contextPath}/resources/images/calendar.gif"
    value="#{valueMB.dateToEvaluate}"
    datePattern="dd/MM/yyyy">
 </rich:calendar>

但是我需要验证,它的值大于我的变量dateInitial,否则..然后启动带有错误的消息验证器。

感谢您提前!我很抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

如果您想限制用户不要选择日期管理器而不是初始日期,则可以使用rich:calendar的dayDisableFunction属性。

  <rich:calendar isDayEnabled="disableBeforeInitialDay" …>  

你可以使用像

这样的javascript函数
function disableBeforeInitialDay(day)  {
   Date initialDay = new Date(2014,1,27); //equals to 27th Feb 2014  
   return (initialDay.getTime() - day.date.getTime() < 0);  
}    

上述代码会禁用早于初始日期的所有日期。

如果你想在服务器端执行,那么编写自己的验证器类

 <rich:calendar .....>  
    <f:validator validatorId="myDateValidator" /> 
 </rich:calendar>  

@FacesValidator("myDateValidator")
public class MyDateValidator implements Validator {  
      @override
      public void validate(FacesContext context, UIComponent comp, Object value) throws    
       ValidatorException {

           Date date = (Date) value;
           Date refDate = new Date(2014,1,27);  
           if (date.before(refDate )) {
               String message = "Date is earlier than initial date.";
               throw new ValidatorException(new FacesMessage(message));
           }  
       }  
  }  

如果您使用的是richfaces 4.X,则该属性应为dayDisableFunction 希望这有帮助