我不得不为我工作的公司做一个小概念验证。我查看了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