2008-10-02 49 views
6

Làm cách nào để định cấu hình lớp để liên kết ba trình đơn thả xuống (ngày, tháng, năm) thành một thuộc tính Date để nó hoạt động theo cách nó hoạt động cho 'tham số yêu cầu duy nhất theo kịch bản của mỗi tài sản? Tôi đoán cần thêm một số PropertyEditors tùy chỉnh bằng cách ghi đè phương thức initBinder. Còn gì nữa?Spring MVC: Liên kết 3 danh sách thả xuống với thuộc tính ngày trong SimpleFormController

Trả lời

4

Aleksey Kudryavtsev: bạn có thể ghi đè lên các phương pháp onBind trong điều khiển của bạn, tôi mà bạn không thể fiddle một cái gì đó đặc biệt trong đối tượng lệnh, như

dateField = new SimpleFormat("YYYY-mm-dd").parse(this.year + "-" + this.month + "-" this.day); 

hay:

Calendar c = Calendar.getInstance(); 
c.set(year, month, day); 
dateField = calendar.getTime(); 

nhưng tôi thà làm xác nhận trong javascript và sử dụng một số avai lable date picker component, có rất nhiều ...

1

Bạn có thể tạo đầu vào bị ẩn trong biểu mẫu và điền nó bằng JavaScript khi người dùng chọn ngày, sau đó liên kết với đầu vào này trong đối tượng lệnh của bạn.

Có thể bạn sẽ vẫn sử dụng javascript cho những thứ như kiểm tra tính chính xác của ngày, vậy tại sao không định dạng ngày sẵn sàng sử dụng trong một tham số.

Sau đó, bạn cần phải đăng ký trình chỉnh sửa thuộc tính sẽ chuyển đổi từ chuỗi "2008-05-20" thành đối tượng Ngày.

+0

Cảm ơn bạn đã trả lời. Ý kiến ​​đó hay đấy. Nhưng có cách nào để làm điều đó ở phía máy chủ? – axk

0

sau đó tôi sẽ có ba lĩnh vực trong đối tượng lệnh của tôi - năm, tháng, ngày và sẽ sử dụng xác nhận mùa xuân tiêu chuẩn cho ngày kiểm tra

+0

Làm cách nào bạn chuyển đổi ba trường này thành thuộc tính Ngày? – axk

0

Tôi chưa thử, nhưng bạn có thể thử ràng buộc với MutableDateTime in the Joda library. Nó có bộ định vị riêng biệt và getters cho cả ba lĩnh vực.

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