Java-EE:更清晰,更简单的JSF替代方案

我们开始使用Java EE 6开发Web应用程序。

我们对JSF生成的HTML的复杂性感到惊讶。 我的意思是即使是一个简单的链接也有一些javascript处理代码。 在我看来,这是一个可用性问题,因为浏览器的手势(如链接上的“ctrl + click”)根本不起作用。 此外,我怀疑当我们需要维护代码或使用jQuery等javascript框架调整UI设计时,这可能会变得更糟。 它重新组合我:Webforms与ASP.Net MVC。 简单的复杂性。

无论如何这是我第一次使用JSF。 所以我真的很想看看你的经历。

你知道一个更简单的Java EE渲染引擎吗?

您对JSF的开发经验如何?

您是否使用JSF和许多jQuery / Dojo / Script.aculo.us开发了一个Web应用程序?

当您询问“更简单的渲染引擎”时,很难定义“简单”的含义。 JSF是一种非常独特的动物,我担心在Java世界中没有任何更简单的东西。

我对JSF的经验非常积极,这来自于在ASP.NET下开发多年经验的人。 学习曲线仍然很陡,如果没有某种forms的自定义Javascript甚至可能是自定义组件,我无法想象复杂的企业系统是可能的,但是在我看来它比ASP.NET 更简单而且重量更轻 。 他们解决了很多使ASP.NET难以使用的问题(例如,DOM的简单客户端ID,XHTML合规性)。

我最近开发了一个应用程序,很快将只使用Primefaces组件,标准Mojarra facelets,一个自定义组件以及一些Javascript /隐藏输入字段解决方案组件框架错误。 除了我需要实现的一些解决方法之外,它非常容易。 我对结果非常满意,利益相关者喜欢它,我将在下一个项目中再次使用它。

在制定一个团队时,我的真实世界经验告诉我,最好将经验丰富的Web应用程序开发人员作为项目的负责人,在Javascript,CSS和Java Web技术方面具有丰富经验的人。 团队的其他成员可能是入门级开发人员,并提供一些指导。

我一直在和一个大型项目的JSF合作。 我有使用JQuery,普通HTML / css / javascript,GWT和Gxt的经验。 我可以告诉你,JSF是最糟糕的。 如果您希望您的后端代码与您的前端代码分离且独立,则JSP不是您的选择。 它将你的前端与你的后端绑在一起,没有明确的关注点分离。 JSF的另一个问题是很难理解。 使用前端技术(例如javascript,html和css)创建出色的AJAX页面非常简单。 我14岁的儿子被教会如何在学校这样做。 使用JSF获得相同的效果非常复杂。 看看如何定义链接: 。 并且无法指定表单操作URL。 您必须使用JSF托管bean和导航语义。 这是一种全新的前端语言。 因此,即使你想要设计前端或添加JQuery,你也会被填充。

配置构建和运行时环境也很痛苦。 jar文件之间存在很多相互依赖关系,如果你没有正确的JSF,Richfaces和Spring Jars组合,那么你就没有希望让你的应用程序在构建环境之外。 如果你想得到一个提示,那就去maven搜索站点找一下javax.faces.component.UIViewRoot类。 每个人和他们的狗都拥有它。 另请注意javax.faces和com.sun.faces – 有什么区别? 谁知道,但他们不能一起工作。 某些版本仅适用于特定版本的RichFaces。

我的建议 – 保持清醒。 为您的应用提供一个弹簧后端和一个普通的HTML前端。 你无法在JSF中编写一个像样的大型企业级应用程序。 这太复杂了。 你最终会得到一个几乎不可能维护的巨大的单片代码库。

您是否真的需要像JSF这样的基于组件的框架,或者您是否在寻找更传统的基于Web请求的MVC框架? 如果是这样,您可能需要查看Apache Struts2或Spring MVC 。 Spring MVC要求您使用核心Spring库。

我已经使用JSF 3年了,我可以说最强大的是它抽象浏览器(表单输入或操作)http请求和Java之间的通信。
JSF提供了丰富的库,例如:ICEfaces,RichFaces,ADF Faces,PrimeFaces,它们为您提供了大量丰富的组件。
JSF试图使Web应用程序的开发更接近桌面应用程序。 它解决了Web应用程序最常见的任务(无论采用何种技术),并使用LifeCycle实现自动化。
但是,如果您希望在某些情况下某个行为与组件的工作方式不同,则必须制定一些变通方法,或者构建自己的组件(除了复合组件之外,这可能很难)。
我已经成功地集成了JS,用于不需要在Java中触发某些操作的任务,例如选择所有复选框,隐藏/显示页面的某些部分,等等。
JSF非常简单,但非常强大,并且需要某些任务的专业知识。
最后一个版本的JSF,2.0解决了JSF的常见问题,因为它具有POST特性,所以现在我对它非常满意。
对于像ctrl + click这样的用户手势,JSF中的Web应用程序的工作方式与普通应用程序略有不同,按钮Back,Forward,Refresh可能无法按预期工作。 但是,嘿,伟大的Web应用程序具有相同的行为:在PayPal中尝试Ctrl +单击..或在Vodafone.ro中尝试后退按钮
如果要完全控制HTML,请使用纯JSP。 但是当你有一个庞大的Web应用程序时,JSF是快速应用程序开发(RAD)的一个很好的选择。

看看ReXSL ,它比JSF更简单,更易于测试。 它是MVC。

你知道一个更简单的Java EE渲染引擎吗?

JSF是主流Java EE中表示层最强大的技术。 只有在引入“复合材料部件”之后才能成为现实。 然而,鲜为人知的HybridJava解决方案不是那么强大,但比JSF简单。