org.springframework.web.servlet.mvc.Controller
's handleRequest mất một HttpServletRequest
và HttpServletResponse
như thông số. Từ đó, bạn không thể xử lý đoạn URI. Như vậy, bộ điều khiển không phù hợp để kiểm soát các yêu cầu dựa trên phân đoạn URI.
Trong ứng dụng của mình, tôi đã triển khai khái niệm rất giống với bộ điều khiển Spring. Ứng dụng của tôi vẫn có khái niệm "lượt xem" và "mô hình". Mỗi khung nhìn được thực hiện trong một lớp riêng biệt và được hiển thị trong một khối trung tâm của trang. Tôi muốn tập trung logic của quá trình xử lý URL để lớp đó, vì vậy tôi đã tạo ra một lớp AbstractControllerEntry
:
public static abstract class AbstractControllerEntry {
public abstract boolean matches(String fragment);
public abstract void open(MainWindow window, String fragment);
}
với một số lớp con tiện như ConstantEntry
, PrefixEntry
và RegexEntry
.
Mỗi lớp chế độ xem có phương thức tĩnh trả về AbstractControllerEntry
.Bộ sưu tập của tất cả các mục được giữ trong một mảng tĩnh bên trong lớp MyController
(không phải là bộ điều khiển MVC Spring). Khi thay đổi phân đoạn (xem UriFragmentUtility), tôi lặp lại tất cả các mục nhập và đối với mục nhập đầu tiên khớp với, tôi sẽ gọi mở. Bất kỳ logic nào khác, chẳng hạn như tìm đối tượng mô hình, nằm bên trong lớp khung nhìn, trong đoạn mã hóa AbstractControllerEntry
.
Bổ sung, có một phương pháp tĩnh khác để tạo phân đoạn URI trong lớp chế độ xem, để mỗi tham chiếu đến chế độ xem là tham chiếu thực sự cho lớp, đây là giải pháp cho liên kết bị hỏng. Và mỗi khung nhìn có phương thức mẫu để có được một đoạn cho khung nhìn hiện tại, được kiểm tra để phù hợp với một mục điều khiển để tăng cường độ mạnh.
Tôi muốn tham khảo SpringApplication rất hoàn chỉnh: http://dev.vaadin.com/svn/incubator/SpringApplication/ – rochb
Tôi cũng đang tìm kiếm tích hợp Vaadin với Spring MVC. Câu trả lời bạn đưa ra là tích hợp với Spring (dependency injection etc). Tôi không thấy bất kỳ điều gì trong số đó ... Cảm ơn –
Tôi cũng sẽ thêm: http://dev.vaadin.com/ticket/4132 và http://vaadin.com/forum/-/message_boards/message/112083 nhưng về cơ bản là về cùng một số –