2009-07-26 40 views
24

Tôi đang suy nghĩ về khả năng sử dụng Spring MVC với Vaadin Framework. Có cách nào để làm cho chúng chơi độc đáo với nhau không? Bạn cũng nên sử dụng chúng cùng nhau? liên quan đến hiệu suất; Tôi sẽ chạy ứng dụng trên một máy chủ chuyên dụng.Vaadin và Spring MVC Integration

Để làm cho câu hỏi của tôi rõ ràng hơn một chút, làm cách nào tôi có thể trả về một modelandview từ Bộ điều khiển Spring MVC mà sẽ hiển thị bằng Vaadin và có thể truy cập tất cả dữ liệu mô hình.

Trả lời

20

Hỗ trợ mùa xuân cho Vaadin là khá mới, nhưng gần đây đã có rất nhiều cuộc trò chuyện về nó trên diễn đàn và một số đã thử nghiệm nó. Dường như làm việc. Có một bài viết trên wiki Vaadin về nó, và một số chủ đề trên diễn đàn nói về Vaadin + mùa xuân hội nhập:

Wiki: Spring Integration
Forum: can it mill toolkit be integrated with spring application
Forum: Spring integration problem
Forum: Working with Spring
Forum: Spring Integration

+1

Tôi muốn tham khảo SpringApplication rất hoàn chỉnh: http://dev.vaadin.com/svn/incubator/SpringApplication/ – rochb

+3

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 –

+0

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

2

Xem this thread trên Diễn đàn Vaadin cho giải pháp AutowiringApplicationServlet của tôi, bao gồm ứng dụng WAR mẫu.

+1

Một giải pháp phát triển hơn hiện có sẵn dưới dạng Tiện ích bổ sung cho Spring Stuff: https://vaadin.com/directory#addon/spring-stuff – Archie

5

Không chắc chắn nếu đó là một lựa chọn thận trọng để tích hợp vaadin với Spring MVC. Đó là một sự lãng phí. MVC có nghĩa là cho các ứng dụng web điển hình dựa trên trang web nơi mà vaadin có trạng thái xem nhiều hơn dựa trên ứng dụng dành cho máy tính để bàn. Tôi thường sẽ làm một cuộc họp ở giữa và có tầng kinh doanh của tôi và lớp truy cập dữ liệu vào mùa xuân và sử dụng Vaadin như là.

1

đồng ý với dhrbo.

không khôn ngoan để sử dụng mvc mùa xuân, nhiều hơn như vậy với luồng web với vaadin. vaadin là một khung ứng dụng web khác.

nếu bạn muốn ý tưởng "spring mvc" trong dự án vaadin của mình, tích hợp nó với lõi lò xo, đậu và ngữ cảnh. theo cách đó bạn có thể có được sự tách biệt rõ ràng giữa các bộ điều khiển, ui (vaadin) và các mô hình (tích hợp với hibernate/orms)

0

org.springframework.web.servlet.mvc.Controller 's handleRequest mất một HttpServletRequestHttpServletResponse 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, PrefixEntryRegexEntry.

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.