Как заставить GWT DatePicker использовать понедельник в качестве первого дня недели?

В значительной степени, как говорится в названии. Мне нужно, чтобы компонент GWT DatePicker использовал понедельник в качестве первого дня недели. В настоящее время метками дня являются SMTWTFS , я хочу, чтобы они были MTWTFSS . Есть ли способ сделать это?

8
задан Strelok 18 August 2010 в 01:09
поделиться

2 ответа

Если автоматическое определение языкового стандарта не соответствует вашим потребностям (и, вероятно, редактирование firstDayOfTheWeek в com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties выиграет ») t быть либо), единственный вариант - изменить реализацию DatePicker:

  • Extend DatePicker, написать новый конструктор, который вызывает защищенный DatePicker (MonthSelector monthSelector, представление CalendarView, модель CalendarModel) с ваш собственный взгляд и модель.

  • CalendarModel может быть расширен, поэтому вам придется переопределить getCurrentFirstDayOfFirstWeek .

  • DefaultCalendarView является окончательным, поэтому вам придется скопировать его в новый класс и изменить его метод setup .

Это довольно беспорядочно, и это небольшой недостаток GWT - он интенсивно использует синглтоны вместо внедрения зависимостей ...

5
ответ дан 5 December 2019 в 17:32
поделиться

Если вы посмотрите на исходный код DefaultCalendarView (который может быть предоставлен в защищенном конструкторе DatePicker ), он использует CalendarUtil GetStartingDayOfWeek , чтобы установить начальный день по умолчанию. CalendarUtil получает дату начала из DateTimeConstants . Итак, как сказал Джу, это зависит от вашего региона.

Вопрос в том, как изменить значение локали по умолчанию. Если честно, я не знаю, как это сделать и возможно ли это вообще. Очевидно, это было бы самым простым решением.

Однако, если это невозможно, вы можете создать класс, расширяющий DatePicker . Затем создайте другой класс, который расширяет DefaultCalendarView и переопределяет метод setup . Скопируйте тот же источник метода, но измените дату начала на понедельник вместо использования даты начала из CalendarUtil . Затем создайте свой собственный DatePicker , используя свой собственный DefaultCalendarView . Это взлом, но он должен работать.

2
ответ дан 5 December 2019 в 17:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: