【问题标题】:Richfaces Calendar with year part in 20th or 21st century带有 20 世纪或 21 世纪年份部分的 Richfaces 日历
【发布时间】:2012-02-28 19:06:54
【问题描述】:

我正在使用 Richfaces(3.3.1) 日历组件作为日期选择器,并且还启用了日期字段编辑。我想限制用户手动输入 20 世纪之前或 21 世纪之后的任何日期 - 基本上年份部分的前两个字符应该是“19”或“20”。是否有一种开箱即用的方法,或者我需要自定义 Richfaces 日历组件?我不想在验证器中执行此操作,因为不同的日期有不同的验证器,在这种情况下,我将有重复的代码,并且必须更改所有日期控件。

这里是代码sn-p:

<rich:calendar value="#{selectedClaim.dateOfLoss}" required="true"
       label="Date of loss" locale="en/US" popup="true"
       datePattern="MM/dd/yyyy" enableManualInput="true"
       cellWidth="24px" cellHeight="22px" style="width:200px"
       inputSize="10" rendered="#{selectedClaim.id == 0}"
       validator="#{claimUtils.checkEntryDate}">
</rich:calendar>

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    您需要实现一个 CalendarDataModel 并将其分配为日历的 dataModel。如果 CalendarDataItem 不符合您的条件,您可以禁用它。

    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    import org.jboss.seam.annotations.Name;
    import org.jboss.seam.annotations.intercept.BypassInterceptors;
    import org.richfaces.model.CalendarDataModel;
    import org.richfaces.model.CalendarDataModelItem;
    
    @Name("richCalendarDataModel")
    @BypassInterceptors
    public class RichCalendarDataModel implements CalendarDataModel {
    
    
        public CalendarDataModelItem[] getData(Date[] arg0) {
            RichCalendarDataItem[] date = new RichCalendarDataItem[arg0.length];
            int i = 0;
            for (Date dd : arg0) {
                RichCalendarDataItem tmp = new RichCalendarDataItem(dd, enable_disableDate(dd));
                date[i] = tmp;
                i++;
            }
    
            return date;
        }
    
        private boolean enable_disableDate(Date dd) {
            if (!isSunday(dd))
                return true;
            else
                return false;
    
        }
    
        public Object getToolTip(Date arg0) {
            ...
        }
    ...
    }
    

    日历数据模型项:

    import java.util.Date;
    
    import org.richfaces.model.CalendarDataModelItem;
    
    public class RichCalendarDataItem implements CalendarDataModelItem {
    
    private Date data;
    
    private boolean enabled;
    
    public RichCalendarDataItem(Date dd, boolean en) {
        data = dd;
        enabled = en;
    }
    
    public int getDay() {
        return 0;
    }
    
    public Object getData() {
        return data;
    }
    
    public String getStyleClass() {
        return null;
    }
    
    public Object getToolTip() {
        return null;
    }
    
    public boolean hasToolTip() {
        return false;
    }
    
    public boolean isEnabled() {
        return enabled;
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      相关资源
      最近更新 更多