我不得不爲我工作的公司做一個小概念驗證。我查看了Spring MVC 3和Tapestry 5.對於那些沒有使用過Tapestry的人來說,它對UI流程有着非常好的約定,例如。按下按鈕或鏈接。在Page類中的所有內容都是ThreadLocal也很好,因此您不必擔心該級別的併發性。
另一方面,我不喜歡Tapestry對Ajax的支持。它有自己的 進行Ajax操作(區等)的標籤,但它是很難做到
$.ajax({
url: "tapestry_page",
success: function(result) {
// do something with json result
}
});
因爲return types accepted by tapestry的。你說你的項目將會是JavaScript豐富的,這可能意味着很多Ajax。僅僅因爲這個原因,我會和Spring一起去。您只需使用@ResponseBody
註釋您的@Controller
方法即可,並且您返回的任何內容都將直接寫入響應正文。這對於直接編寫json或xml非常有用(在大多數情況下,它是使用Jackson或JAXB自動生成的)。
隨着Spring的發展,最大的積極因素是它是一個非常成熟的項目,所以您需要的任何東西,有人可能需要它並提供解決方案(並非Tapestry的情況並非如此,但存在更多文檔爲春天)。
春季的幾個負面:這是非常緊密耦合的事情Servlet的方式,doGet
和doPost
之類的東西表單處理並不像團結一致如同行在Tapestry's form lifecycle。如果你正在做很多同步操作,Tapestry的Page概念是非常好的,也許還有很長的路要走。
我不確定Tapestry是否已經實現了可以在不使用xml的情況下配置整個應用程序的地步,但Spring已經實現了。這可能對你有利。
我的2美分。
這實際上是同樣的問題在這裏問,http://stackoverflow.com/questions/2845271/struts-2-or-jsf/2845344#2845344,但與不同的球員。這一切仍然成立。 – 2013-03-08 14:43:03
僅供參考:Tapestry(5.4)的新即將發佈的版本專注於JavaScript,因此也許值得一試。 – 2013-03-14 11:49:10