Календарь Richfaces с частью года в 20 или 21 веке - PullRequest
0 голосов
/ 28 февраля 2012

Я использую компонент календаря Richfaces (3.3.1) в качестве средства выбора даты, и редактирование поля даты также включено.Я хочу ограничить пользователя от ручного ввода любой даты до 20-го века или после 21-го века - в основном первые два символа части года должны быть «19» или «20».Есть ли готовый способ сделать это, или мне нужно настроить компонент календаря Richfaces?Я не хочу делать это в валидаторе, поскольку разные даты имеют разные валидаторы, и в этом случае у меня будет дублированный код, и мне придется изменить все элементы управления датами.

Вот фрагмент кода:

<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>

1 Ответ

1 голос
/ 07 марта 2012

вам нужно реализовать 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) {
        ...
    }
...
}

CalendarDataModelItem:

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;
}

}

...