只是一个普遍的问题,可供讨论......
到目前为止,我非常喜欢JSF,我是新手,但我更喜欢Struts。从专业人士的角度来看,您是否看到了JSF的强大未来?作为一个年轻的程序员,通过Struts或其他类似框架学习JSF 2.0是否值得投资?我应该坚持常规JSP吗?通过JQuery,Ajax比JSF更简单吗?
我喜欢新技术,我喜欢到目前为止我从JSF看到的内容,但我也想要实用,而且很多谷歌搜索都会发现一些关于JSF 2.0的直言不讳的评论。
想法?
答案 0 :(得分:19)
将JSF与Struts进行比较就像将苹果与橙子进行比较一样。 Struts是基于请求/操作的MVC框架,而JSF是基于组件的MVC框架。 Struts也老了。在IT中你应该继续前进。通常,基于组件的MVC框架被视为基于请求/动作的MVC框架的进一步演进。
JSF目前已被广泛使用。它之前确实受到了很多批评。您可以在问题What are the main disadvantages of JSF 2.0?中阅读大部分内容.JSF的优势主要是Java EE维护标准以及相对大量第三方组件库的可用性(PrimeFaces,{{3} },RichFaces,IceFaces,OpenFaces等)。使用JSF,可以很容易地开发CRUD应用程序和Web表单,并且很快就能获得很好的外观。
然而,当它进入复合体时,JSF可能会引起一些无法预料的意外。尽管自最新的1.2版本以来JSF规范和参考实现(Mojarra)已经相当成熟,但您可能会遇到一些与您的直觉相违背的非常具体的行为问题。有些只是“按设计”,只有当您详细了解如何 JSF在封面下工作时才能理解,而这反过来常常归结为HTTP协议的无状态特性。 JSF在本质上抽象它“太多”,你不再看到它了。有些只是使用的第三方组件库中的错误,但因此不是严格的JSF实现特定的。但是,如果您及时报告错误,则错误/问题处理在大多数主要组件库中都相当不错。
至于ajaxical的东西,JSF 2.0确实提供了很少的手动控制手动触发ajaxical请求和控制服务器和客户端的视图树。仅仅因为它是一个基于组件的MVC框架,它将树状态保持在两侧。在掌握ajaxical作品时,你必须考虑到双方。如果确实在基于ajax / request的操作中需要更多自由,那么基于组件的MVC框架就是错误的选择。您应该选择基于请求/操作的MVC框架,而不是像Spring MVC,Struts或Stripes,以及像jQuery这样的JS库。但是你必须自己编写很多HTML / CSS / JS样板。