3

我有一个 Struts (1.3.8) 应用程序,我想将它转换为 Tapestry 5。可能没有时间一口气完成整个转换。我想在 Tapestry 中提供新功能,并在时间允许的情况下转换现有的 Struts / JSP。有没有人尝试过这样的事情?Struts 和 Tapestry 可以共存吗?

4

3 回答 3

2

如果您像大多数人那样使用 Struts,那么您可能拥有所有以 /action 开头或以 .do 结尾的 Struts url。正如 Shiny 和 New 先生所指出的,这意味着您可以使用 Tapestry 过滤器和 Struts 过滤器或 servlet 过滤不同的 URL。我都使用过,我强烈建议您尽量让 Tapestry 不必处理 Struts URL。使用 Struts,您几乎可以对 URL 进行手动编码,因此链接到 Tapestry 页面应该不是问题,但是如果您希望 Tapestry 链接回 Struts URL,您可能无法以标准方式使用它。理想情况下,您可以拆分应用程序的一部分(如内部管理功能)并让它们完全独立。

于 2009-02-25T05:21:21.273 回答
1

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

如果您想保留一些 URL,您可以更改 Struts 操作以转发到新的内部 URL;最终,你所有的 struts 动作本质上都是 url 重写动作,你可以去掉 struts 并用一个 url 重写过滤器替换它。

如果您的新 URL 都不会与旧 URL 冲突,那么没有什么难做的。只需设置新框架及其请求处理程序。当遇到一个 struts 动作 ( /doSomething.do) 时,StrutsActionServlet会将请求分派给该动作。您可以在其中struts-config.xml转发到正确的位置,无论是 JSP 还是 tile 或 Tapestry URL。我想在 Tapestry 中有一种方法可以在您处理完请求后转发到任意 url;如果需要,只需转发到 Struts 操作。

我可以预见的一个棘手问题是 Struts 和 Tapestry 是否对第三方库有冲突的要求。如果这不起作用,那么对于任何类型的简单迁移,您都可能会非常不走运。

于 2009-02-24T19:13:44.463 回答
0

我做过一次。我必须在两个框架的会话之间架起一座桥梁,因为它们为此使用了自己的常量/前缀。我们逐步从旧版应用程序切换到 T5 应用程序。我们只是使用 web.xml 将 struts 请求指向 struts,T5 请求将被 T5 过滤器拾取。我认为您甚至可以将 T5 过滤器配置为忽略某些 url。

我们还使用了 tukey URLRewrite 过滤器来控制单个请求是否通过,这样一来页面可能一天是 struts,下一天是 T5,并且 url 将保持不变(如果您的 struts 应用程序处于活动状态并且人们可能已经为它添加了书签,这很有用)

如果我发现任何问题,我将通读代码(我已将其存档)并回发更多信息。

祝你好运。

于 2009-07-22T09:57:41.050 回答