2009-07-26 114 views
24

我正在考虑在Vaadin框架中使用Spring MVC的可能性。有没有任何文件记录的方式让他们在一起很好地玩耍?同时使用它们也是一个好主意吗?与表演有关;我要在专用服务器上运行该应用程序。Vaadin和Spring MVC集成

为了让我的问题更清楚一点,我如何从Spring MVC控制器返回一个modelandview,它将使用Vaadin进行渲染并可以访问所有模型数据。

回答

20

Vaadin对Spring的支持很新,但最近在论坛上有很多关于它的讨论,并且有些已经对它进行了测试。似乎工作。有对Vaadin维基关于它的文章,并在论坛上一些线程谈论Vaadin + Spring集成:

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 2010-02-12 21:13:37

+3

我还在寻找Vaadin与Spring MVC的集成。你给的答案是与Spring的集成(依赖注入等)。我没有看到任何...谢谢 – 2010-03-08 14:20:29

2

this thread上Vaadin论坛为我的AutowiringApplicationServlet解决方案,包括一个示例WAR应用程序。

5

不确定将vaadin与Spring MVC集成是否是一种谨慎的选择。它是一种浪费。 MVC适用于典型的基于页面的网络应用程序,其中vaadin的视图状态更像桌面应用程序。我通常会在中间进行一次会面,并在春季使用我的业务层和数据访问层,并按原样使用Vaadin。

1

与dhrbo一致。

它不是明智地使用spring mvc,更适合使用带有vaadin的webflow。 vaadin是另一个网络应用程序框架。

如果你想在你的vaadin项目中使用“spring mvc”的想法,将它与spring-core,beans和context集成在一起。这样你就可以在控制器,UI(vaadin)和模型(与休眠/ orms集成)之间得到清晰的分离。

0
org.springframework.web.servlet.mvc.Controller

的的handleRequest需要HttpServletRequestHttpServletResponse作为参数。从这些,你不能处理的URI片段。因此,控制器不适合基于URI片段来控制请求。

在我的应用程序中,我实现了与Spring控制器非常相似的概念。我的应用程序仍然有“观点”和“模型”的概念。每个视图都在单独的类中实现,并显示在页面的中央块中。我想集中的URL的处理的逻辑的那类,所以创建了一个类AbstractControllerEntry

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

与几个方便子类,如ConstantEntryPrefixEntryRegexEntry

每个视图类都有一个静态方法,返回AbstractControllerEntry。所有条目的集合都保存在MyController类(不是Spring MVC控制器)内的静态数组中。在片段的变化(见UriFragmentUtility),我遍历所有条目,并为第一,它匹配,我会打电话给开。任何其他逻辑(如查找模型对象)都在视图类的内部,在AbstractControllerEntry实现中。

Additionaly,还有另一种,以产生在视图类的URI片段静态方法,使每一个参照本发明的观点是一个真正的参考一类,这是一个解决方案,断开的链接。并且每个视图都有实例方法来获取当前视图的片段,该视图被检查以匹配控制器条目以增加健壮性。