Java Server Faces 2.0或Tapestry 5.2?

Ins*_*oup 8 jsf frameworks tapestry

有没有比较JSF 2和Tap 5的最新文章?我似乎发现的一切都是比较JSF 1.2和Tap4.

有没有人有T5或JSF2的经验和时间传福音?

我正在寻找一个基于Hibernate和mySql的Java快速开发框架.

其他框架销售宣传已被接受,但JSF2和T5目前是我们的首选.

Hen*_*ing 24

在过去的几年里,我主要使用Tapestry 5; 我不会传福音.选择一个好的Web框架当然是个好主意,但通常不是您的主要问题.

从我的头脑中列出好的和坏的事情:

  • Tapestry 5的初始学习曲线相当陡峭.到处都有魔术和元编程.您可能会认为它超出了配置的约定.

  • 简单的东西很容易做,更难的东西要求你详细了解Tapestry 5的工作原理,如果你还没有,可能很难.

  • 我喜欢现场课重装.您可以在T5组件或模板中更改某些内容,并立即看到它.当您的应用程序执行大量操作并在Jetty中启动需要30秒以上时非常有用.

  • Tapestry不支持动态页面结构.这通常不是问题,但如果您正在开发某种门户解决方案,人们可​​以单独安排组件,请不要使用Tapestry.Tapestry适用于静态结构,它可以很好地处理.

  • Tapestry有漂亮的URL. package/page/${param1}/${param2} ...

  • Tapestry使用适当的HTTP动词来做事情.链接是GET,表单提交是POST,后重定向获取模式是常态.

  • Tapestry的社区不是很大.除了霍华德刘易斯船,还有一些其他的提交者,但没有像Wicket的支持.因此,Tapestry的发展相当缓慢.

  • Tapestry的模板方法(使用类型和ID来检测HTML)是我见过的最好的方法之一,但它并没有像Wicket那样将代码保留在HTML之外.另一方面,类文件不那么冗长.不过,我认为Wicket方式更可取.

  • Tapestry有些记录不足.

我非常喜欢Tapestry,我认为你可以非常高效,我总是很乐意参与使用它的项目.

不过,我会建议你查看Wicket.它似乎比Tapestry获得了更多的牵引力,并且不太神奇地解决了一些问题,但是采用了常识方法.

(我只是简单地使用了JSF 1,我发现它完全取决于它所做的一切:在POST中包装每个请求(从而打破基本的Web功能),使用JSP,但需要使用特殊标签,甚至简单的HTML ...我在JSF阵营中看到了很多改进,但我不知道,我再也没看过它.)


Dam*_*amo 8

接受你的提议并推销另一个框架:

如果你想要真正快速的开发,那么你应该看看Play Framework.

我已经使用过JSF/Richfaces/Seam/Hibernate等,我会说使用Play会使你的工作效率提高一倍以上.没有部署周期.所以没有开发人员停工.它有JPA/Hibernate和很多插件,可以在其他方向扩展它的功能.

我也喜欢它使你的页面如此轻量级的事实.我对JSF最大的问题始终是页面的重量(不必要的ID,很多表,客户端状态等)

花些时间观看网络直播.


小智 6

看看我的演讲JSF 2.0 vs. Tapestry 5:在Jazoon 2010上进行的直接对比.这可能有助于您做出决定.

作为Tapestry的提交者,我建议你选择Tapestry,但我认为做出决定的最好办法就是试一试.需要更多演示应用吗?

https://github.com/drobiazko/tapestry5inaction/tree/master/tlog

对我来说最重要的Tapestry 5功能是框架的灵活性.由于Tapestry IoC,你几乎可以覆盖Tapestry内核中的每一段代码.


How*_*hip 5

不要向我展示一个公正的意见...... Tapestry已经成为我的生命已有好几年了,我仍然喜欢它.

话虽这么说,学习曲线变得越来越陡峭,文档正在迅速改进,而Igor的书即将到来.

一些令人困惑的事情就是缺乏文档; 例如,命名约定是可选的,总是有一些人更熟悉的更明确的配置(以方法注释的形式).

要解决几个亨宁点:

Tapestry组件模板在设计上是静态的(这对Tapestry的可伸缩性和集群性故事非常重要).但是,作为我的TapX库的一部分的附加组件支持填补空白的动态外部模板.

此外,如果您希望最大限度地保留模板,也可以这样做,例如:

<form t:id ="myForm">

...在模板中,其余部分在Java类中:

@Component(parameters = {"zone = target","clientValidation = blur","context = client","secure = true")private form myForm;

....换句话说,所有Tapestry特定的内容都出模板并进入代码.对于琐碎的组件来说并不理想(更多在模板和Java源之间来回切换),但对于保持世界的美观和分离非常有用.