2009-12-16 8 views
6

Моя проблема заключается в том, чтобы календарь RichFaces ограничивал даты, которые могут быть выбраны пользователем .Графики Richfaces Минимальные и максимальные даты

Предположим, я хочу, чтобы пользователь мог выбирать только даты этого месяца и даты следующего месяца.

Я использовал атрибуты preloadDateRangeStart и preloadDateRangeEnd, но они ничего не сделали.

Я создал свой собственный CalendarDataModel, который использует preloadDateRangeStart и preloadDateRangeEnd и включает элементы, но календарь на экране позволяет выбирать только даты текущего месяца. Обратите внимание, что preloadDateRangeStart - это сегодняшняя дата, а preloadDateRangeEnd - сегодняшняя дата плюс 2 месяца.

У меня отсутствует что-то здесь точно. Может кто-нибудь мне помочь?

ответ

3

Используйте атрибут isDayEnabled="isDayEnabled", где значение (isDayEnabled) является Java-функции вы должны определить, в виде

function isDayEnabled(day) { 
} 

richfaces demo Смотрите для более подробной информации.

Если вы хотите добавить проверку на стороне сервера, использовать пользовательские JSF валидатор, или использовать Hibernate Validator аннотаций (см RichFaces - боб валидатор)

+0

Можно ли это сделать на стороне сервера? Я не хочу использовать javascript. Я должен был бы выполнить дополнительные проверки на сервере! – DaTroop

+0

выполнить проверку на сервере вручную. Использование пользовательского JSF 'Validator'. Или, используя аннотации Hibernate Validator (см. Richfaces - bean validator) – Bozho

+0

Уже сделано! Спасибо за все! – DaTroop

1

Я понял, как это работает так вот он идет:

Я создал класс, который реализует CalendarDataModel.

Я не использовал атрибуты preloadDateRangeStart и preloadDateRangeEnd хотя, потому что CalendarDataModel заботится только о диапазоне между preloadDateRangeStart и preloadDateRangeEnd в случае их следует указать.

Так что теперь он отлично работает. Вот тег:

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

Я также пробовал ваше решение. Это работает, но это немного грязно на клиенте.

Еще раз спасибо человеку

+0

Не могли бы вы разместить Java-код для реализации CalendarDataModel? –

+0

Lazlo У меня нет кода. Я сменил работу. Посмотрите на фактическую реализацию http://www.java2s.com/Open-Source/Java-Document/JBoss/richfaces-ui-3.1.4.GA/org/richfaces/CalendarDataModelImpl.java.htm и внесите изменения в человека. Ваше имя выглядит как UUID версия 5. – DaTroop

Смежные вопросы