2009-02-24 53 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應用程序是活的,人們可能已將其加入書籤)

我會通讀代碼(我將它存檔在某處),如果我發現任何問題,請回復更多信息。

祝你好運。