2009-07-26 7 views
24

Vaadin Framework에서 Spring MVC를 사용할 가능성에 대해 생각하고 있습니다. 함께 잘 연주 할 수있는 문서화 된 방법이 있습니까? 그것들을 함께 사용하는 것도 좋은 생각입니까? 성과와 관련; 전용 서버에서 앱을 실행하겠습니다.Vaadin과 Spring MVC 통합

내 질문을 좀 더 명확하게하기 위해 어떻게 Vaadin을 사용하여 렌더링하고 모든 모델 데이터에 액세스 할 수있는 Spring MVC 컨트롤러에서 modelandview를 반환 할 수 있습니까?

답변

20

Vaadin에 대한 Spring 지원은 꽤 새로울 것이지만 최근에 포럼에 대해 많은 이야기가 있었고 일부는 그것을 테스트했습니다. 일하는 것 같습니다. 거기에 대한 angel이라는 위키 문서이며, 포럼에 대한 몇 가지 스레드가 만약 angel + 봄 통합에 대해 이야기 :

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

아주 완벽한 SpringApplication을 참조하고자합니다 : http://dev.vaadin.com/svn/incubator/SpringApplication/ – rochb

+3

또한 Spring MVC와 Vaadin 통합을 찾고있었습니다. 당신이 준 응답은 스프링과의 통합입니다 (의존성 주입 등). 나는 그것들 중 하나를 볼 수 없다 ... 감사합니다 –

+0

또한 추가 할 것이라고 : http://dev.vaadin.com/ticket/4132 및 http://vaadin.com/forum/-message_boards/message/112083하지만 그것은 기본적으로 거의 동일합니다 –

2

가에 this thread를 참조하십시오 샘플 WAR 애플리케이션을 포함한 내 AutowiringApplicationServlet 솔루션을위한 Vaadin 포럼.

+1

진화 된 솔루션은 이제 Spring Stuff Add-on으로 사용할 수 있습니다. https://vaadin.com/directory#addon/spring-stuff – Archie

5

vaadin을 Spring MVC와 통합하는 것이 현명한 선택인지는 확실하지 않다. 그 쓰레기. MVC는 vaadin이 데스크톱 응용 프로그램과 같은 뷰 상태를 기반으로하는 일반적인 페이지 기반 웹 응용 프로그램을위한 것입니다. 나는 일반적으로 중간에 모임을 가질 것이고 봄에는 비즈니스 계층과 데이터 액세스 계층을 가지며 Vaadin을 그대로 사용합니다.

1

은 dhrbo와 합의했습니다.

봄 mvc를 사용하는 것이 현명하지 않습니다. vaadin과 함께 웹 플로우를 사용하는 것이 좋습니다. vaadin은 또 다른 웹 앱 프레임 워크입니다.

vaadin 프로젝트에서 "spring mvc"에 대한 아이디어를 원한다면 spring-core, beans 및 context와 통합하십시오. 컨트롤러, ui (vaadin) 및 모델 (hibernate/orms와 통합) 간의 명확한 구분을 얻을 수 있습니다.

0

org.springframework.web.servlet.mvc.Controller는의 handleRequest 파라미터로서 HttpServletRequestHttpServletResponse 걸린다. 이들로부터 URI 조각을 처리 할 수 ​​없습니다. 따라서 컨트롤러는 URI 조각을 기반으로 요청을 제어하는 ​​데 적합하지 않습니다.

제 애플리케이션에서는 스프링 컨트롤러와 비슷한 개념을 구현했습니다. 내 응용 프로그램에는 여전히 "보기"및 "모델"이라는 개념이 있습니다. 각보기는 별도의 클래스로 구현되며 페이지의 중앙 블록에 표시됩니다. 그 클래스에 URL 처리의 논리를 중앙 집중화하고 싶었다, 그래서 클래스 AbstractControllerEntry 생성 : 같은 ConstantEntry, PrefixEntryRegexEntry 등 여러 편의 서브 클래스로

public static abstract class AbstractControllerEntry { 
    public abstract boolean matches(String fragment); 
    public abstract void open(MainWindow window, String fragment); 
} 

합니다.

각보기 클래스에는 AbstractControllerEntry을 반환하는 정적 메서드가 있습니다.모든 항목의 콜렉션은 MyController 클래스의 정적 배열 (스프링 MVC 컨트롤러가 아님)에 보관됩니다. 프래그먼트가 변경되면 (UriFragmentUtility 참조) 모든 항목을 반복하고 먼저 일치하는 항목을 열기 위해 호출합니다. 모델 객체를 찾는 것과 같은 다른 로직은 AbstractControllerEntry 임 플리 멘 테이션의 뷰 클래스 안에 있습니다.

또한 뷰 클래스에서 URI 조각을 생성하는 또 다른 정적 메서드가 있으므로보기에 대한 각 참조가 클래스에 대한 실제 참조이므로 끊어진 링크에 대한 해결책입니다. 각 뷰에는 현재 뷰에 대한 프래그먼트를 가져 오는 인스턴스 메소드가 있으며 컨트롤러 항목을 일치시켜 강건성을 높입니다.