2009-02-24 36 views
3

我有一个Struts,我想转换为挂毯5.有可能没有时间做整体转换一举(1.3.8)应用程序。我希望在Tapestry中提供新功能,并在时间允许的情况下转换现有的Struts/JSP。有没有人尝试过这样的事情? Struts和Tapestry可以共存吗?零碎转换为挂毯5

+0

不要花太长的时间;如果你太慢了,Tapestry 6将会退出,如果v4和v5发行版有任何问题,它将与之前的版本没有任何相似之处。 – skaffman 2009-07-22 10:03:43

回答

1

没有使用过Tapestry,我会说任何两个框架应该能够共存,因为在web.xml中定义了如何将url映射到servlet /过滤器。例如,在Wicket中有一个过滤器,用于检查实现请求处理程序的Wicket类。如果没有任何匹配,请求就会通过链。这将允许您继续使用Struts进行某些操作。

如果你有,你想保留一些网址,你可以改变Struts动作转发到新的内部URL;最终所有的struts动作都将是url重写动作,并且你可以将struts翻出来并用url重写过滤器替换它。

如果没有新的URL将与旧网址冲突,那么就没有什么困难的事情。只需建立新的框架及其请求处理程序。当遇到struts操作时(/doSomething.do),Struts ActionServlet会将请求分派给操作。在struts-config.xml中,您可以转发到正确的位置,即JSP或瓦片或Tapestry URL。我想在Tapestry中有一种方法可以在完成处理请求后转发到任意的url;如果需要的话,只需转发到Struts操作即可。

的一个棘手的问题,我可以预见的是,如果Struts和挂毯有第三方库冲突的要求。如果这不起作用,你可能会因为任何一种简单的迁移而失去运气。

2

如果你做的Struts像大多数人做到这一点,你可能有所有你的Struts开始/动作​​或用。做结尾的网址。正如Shiny和New先生指出的那样,这意味着您可以使用Tapestry过滤器和Struts过滤器或servlet过滤不同的URL。我已经使用了两者,我强烈建议您尝试让Tapestry不必处理Struts URL。使用Struts,你可以手动编写URL,所以连接到Tapestry页面不应该是一个问题,但是如果你想让Tapestry连接到Struts URL,你可能无法以标准方式使用它。理想情况下,您可以拆分一部分应用程序(如内部管理功能),并让它们完全独立。

+0

我已经提出了一个概念证明,Struts和Tapestry可以通过添加Tapestry页面在同一个应用程序中生活。需要做进一步的工作,看看两者之间是否存在连接,会话数据等问题 – 2009-02-26 16:21:58

0

我这样做一次。我必须在这两个框架的会话之间架起一座桥梁,因为他们为此使用了自己的常量/前缀。我们从传统应用程序逐渐切换到T5应用程序。我们只是使用web.xml来将struts请求指向struts,而T5请求则会被T5过滤器所取代。我想你甚至可以配置T5过滤器来忽略某些URL。

我们还使用了tuckey的URLRewrite过滤器来控制个别请求去了,这样一个页面可以struts一天,T5下一个和url将保持不变(这是有用的,如果你的struts应用程序是活的,人们可能已将其加入书签)

我会通读代码(我将它存档在某处),如果我发现任何问题,请回复更多信息。

祝你好运。