Khá nhiều, tiêu đề nói gì. Tôi cần phải làm cho thành phần GWT DatePicker sử dụng thứ hai là ngày đầu tiên của tuần. Hiện tại, nhãn ngày là S M T W T F S
, tôi muốn nó là M T W T F S S
. Bất kỳ cách nào để thực hiện nó?Làm cách nào để làm cho GWT DatePicker sử dụng thứ Hai là ngày đầu tiên của tuần?
Trả lời
Nếu phát hiện địa phương tự động không phù hợp với nhu cầu của bạn (và có lẽ chỉnh sửa firstDayOfTheWeek
trong com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties
sẽ không thể là), lựa chọn duy nhất sẽ được sửa đổi việc thực hiện DatePicker:
Mở rộng DatePicker, viết một hàm khởi tạo mới gọi hàm tạo
DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model)
được bảo vệ với chế độ xem và mô hình của riêng bạn.Lịch biểu có thể được mở rộng, vì vậy bạn phải ghi đè
getCurrentFirstDayOfFirstWeek
.DefaultCalendarView
là cuối cùng, vì vậy bạn phải sao chép nó vào một lớp mới và sửa đổi phương thứcsetup
của nó.
Đó là khá lộn xộn, và đó là nhược điểm nhỏ của GWT - nó làm cho việc sử dụng nặng Singletons thay vì Dependency Injection ...
Mmmm ... Tôi sẽ chấp nhận câu trả lời này, bởi vì tôi cũng đang nghĩ như vậy. Tôi sẽ thử nó. – Strelok
Nếu bạn nhìn vào mã nguồn của DefaultCalendarView (có thể được cung cấp trong hàm dựng được bảo vệ của một số DatePicker), nó sử dụng getStartingDayOfWeek của CalendarUtil để đặt ngày bắt đầu mặc định. CalendarUtil
nhận ngày bắt đầu từ DateTimeConstants
. Vì vậy, như ju nói, nó được xác định bởi miền địa phương của bạn.
Câu hỏi là, làm thế nào để bạn ghi đè lên giá trị mặc định của ngôn ngữ. Thành thật mà nói, tôi không biết làm thế nào để làm điều này hoặc nếu nó thậm chí có thể. Đó rõ ràng là giải pháp dễ nhất.
Tuy nhiên, nếu không thể, bạn có thể làm là tạo một lớp mở rộng DatePicker
. Sau đó, tạo một lớp khác mở rộng DefaultCalendarView
và ghi đè phương thức setup
. Sao chép trên cùng một nguồn phương thức nhưng thay đổi ngày bắt đầu thành Thứ Hai thay vì sử dụng ngày bắt đầu từ CalendarUtil
. Sau đó, tạo tùy chỉnh DatePicker
bằng cách sử dụng tùy chỉnh DefaultCalendarView
của bạn. Đó là một hack, nhưng nó sẽ hoạt động.
Chỉ định một miền địa phương khác dễ dàng (trong [tài liệu GWT] (http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying)) - nhưng sau đó nó sẽ áp dụng cho mọi tiện ích GWT trong trang ... BTW: Bạn có thực sự sao chép câu trả lời của tôi? –
Hahaha, tôi bắt đầu viết bài của tôi khi không có câu trả lời nhưng tôi đã không thể hoàn thành nó ngay lập tức. Vào thời điểm tôi hoàn thành và gửi nó, bạn đã có ... vì một lý do nào đó Stackoverflow không cảnh báo tôi như nó đã làm trước đây. Xin lỗi: P –
Không phải lo lắng - Vui lòng tìm ai đó nghĩ như nhau :-) –
Không cần phải phân lớp DatePicker. Vui lòng đọc tài liệu google gwt bằng cách nhấp vào bên dưới url. http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying
Tôi nghĩ rằng DatePicker này đang sử dụng ngôn ngữ của bạn để tự động tùy chỉnh DatePicker cho bạn. http://code.google.com/p/gwt-datepicker/wiki/HowToUse –