org.springframework.web.servlet.mvc.Controller
는의 handleRequest 파라미터로서 HttpServletRequest
및 HttpServletResponse
걸린다. 이들로부터 URI 조각을 처리 할 수 없습니다. 따라서 컨트롤러는 URI 조각을 기반으로 요청을 제어하는 데 적합하지 않습니다.
제 애플리케이션에서는 스프링 컨트롤러와 비슷한 개념을 구현했습니다. 내 응용 프로그램에는 여전히 "보기"및 "모델"이라는 개념이 있습니다. 각보기는 별도의 클래스로 구현되며 페이지의 중앙 블록에 표시됩니다. 그 클래스에 URL 처리의 논리를 중앙 집중화하고 싶었다, 그래서 클래스 AbstractControllerEntry
생성 : 같은 ConstantEntry
, PrefixEntry
및 RegexEntry
등 여러 편의 서브 클래스로
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 조각을 생성하는 또 다른 정적 메서드가 있으므로보기에 대한 각 참조가 클래스에 대한 실제 참조이므로 끊어진 링크에 대한 해결책입니다. 각 뷰에는 현재 뷰에 대한 프래그먼트를 가져 오는 인스턴스 메소드가 있으며 컨트롤러 항목을 일치시켜 강건성을 높입니다.
아주 완벽한 SpringApplication을 참조하고자합니다 : http://dev.vaadin.com/svn/incubator/SpringApplication/ – rochb
또한 Spring MVC와 Vaadin 통합을 찾고있었습니다. 당신이 준 응답은 스프링과의 통합입니다 (의존성 주입 등). 나는 그것들 중 하나를 볼 수 없다 ... 감사합니다 –
또한 추가 할 것이라고 : http://dev.vaadin.com/ticket/4132 및 http://vaadin.com/forum/-message_boards/message/112083하지만 그것은 기본적으로 거의 동일합니다 –