2009-12-16 34 views
6

Vấn đề của tôi là làm cho lịch RichFaces hạn chế những ngày được phép sử dụng bởi người dùng.Ngày và số ngày tối đa của Lịch Richfaces

Giả sử tôi muốn chỉ cho phép các ngày trong tháng này và ngày của tháng tiếp theo được người dùng chọn.

Tôi đã sử dụng thuộc tính preloadDateRangeStart và preloadDateRangeEnd nhưng chúng không làm gì cả.

Tôi đã tạo LịchDataModel của riêng mình sử dụng preloadDateRangeStart và preloadDateRangeEnd và bật các mục nhưng lịch trên màn hình chỉ cho phép các ngày của tháng hiện tại được chọn. Lưu ý rằng preloadDateRangeStart là ngày hôm nay và preloadDateRangeEnd là ngày hôm nay cộng với 2 tháng.

Tôi thiếu điều gì đó ở đây chắc chắn. Ai đó có thể giúp tôi không?

Trả lời

3

Sử dụng isDayEnabled="isDayEnabled" thuộc tính, trong đó giá trị (isDayEnabled) là một hàm javascript bạn nên xác định, dưới hình thức

function isDayEnabled(day) { 
} 

Xem richfaces demo để biết thêm chi tiết.

Nếu bạn muốn thêm xác nhận ở phía máy chủ, sử dụng một tùy chỉnh JSF Validator, hoặc sử dụng các chú thích Hibernate Validator (xem richfaces - đậu validator)

+0

Điều này có thể được thực hiện ở phía máy chủ không? Tôi không muốn sử dụng javascript. Tôi sẽ phải thực hiện xác nhận thêm trên máy chủ! – DaTroop

+0

thực hiện xác thực trên máy chủ theo cách thủ công. Sử dụng JSF 'Validator' tùy chỉnh. Hoặc, bằng cách sử dụng chú thích Hibernate Validator (xem richfaces - bean validator) – Bozho

+0

Đã xong! Cảm ơn mọi thứ! – DaTroop

1

tôi đã tìm ra cách thức hoạt động như vậy ở đây nó đi:

Tôi đã tạo một lớp thực hiện CalendarDataModel.

Tôi không sử dụng thuộc tính preloadDateRangeStartpreloadDateRangeEnd mặc dù vì CalendarDataModel chỉ quan tâm đến phạm vi giữa preloadDateRangeStartpreloadDateRangeEnd trong trường hợp bạn chỉ định chúng.

My CalendarDataModel vô hiệu hóa mục lịch có ngày nằm ngoài phạm vi ngày tôi đã chỉ định trong tệp tin thuộc tính và tôi sử dụng trong CalendarDateModel để xác định xem ngày của mục đó có nằm trong phạm vi không.

Vì vậy, bây giờ nó hoạt động tuyệt vời. Đây là thẻ:

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

Tôi cũng đã thử giải pháp của bạn. Nó hoạt động nhưng đó là một chút lộn xộn trên máy khách.

Cảm ơn bạn lần nữa man

+0

Bạn có thể vui lòng đăng mã Java để triển khai CalendarDataModel không? –

+0

Lazlo Tôi không có mã. Tôi đã thay đổi công việc. Xem xét triển khai thực tế http://www.java2s.com/Open-Source/Java-Document/JBoss/richfaces-ui-3.1.4.GA/org/richfaces/CalendarDataModelImpl.java.htm và thực hiện thay đổi của bạn. Tên của bạn trông giống như một phiên bản UUID 5. – DaTroop

Các vấn đề liên quan