有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

雅加达ee JavaEE:JSF的更干净、更简单的替代方案

我们开始使用JavaEE6开发一个web应用程序

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

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

你知道一个更简单的JavaEE渲染引擎吗

您使用JSF的开发经验如何

您是否使用JSF和大量jQuery/Dojo/Script开发了一个web应用程序。阿库洛。我们


共 (5) 个答案

  1. # 1 楼答案

    我一直在与JSF合作一个大型项目。我有使用JQuery、普通HTML/css/javascript、GWT和Gxt的经验。我可以告诉你,JSF是其中最差的。如果您希望后端代码独立于前端代码,那么JSP就不是一个好办法。它将前端和后端捆绑在一起,没有明确的关注点分离。JSF的另一个问题是很难让你的头脑清醒过来。使用前端技术(例如javascript、html和css)创建优秀的AJAX页面非常容易。我14岁的儿子在学校被教如何做。使用JSF获得同样的效果非常复杂。看看如何定义as link:<h:commandLink value="New" immediate="true" action="#{projectUiService.showProjectCreate}" />。并且没有办法指定表单操作url。您必须使用JSF托管bean和导航语义。这是一种全新的前端语言。因此,即使您想要设计前端样式或在其中添加JQuery,您也会被填满

    配置构建和运行时环境也是一个难题。jar文件之间有太多的相互依赖关系,如果您没有JSF、Richfaces和SpringJAR的正确组合,那么您的应用程序甚至不可能脱离构建环境。如果您想得到这方面的提示,请转到maven搜索站点并查找类javax.faces.component.UIViewRoot。每个人和他们的狗都有。还要注意javax。faces和com。太阳脸-有什么区别?谁知道呢,但他们不在一起工作。有些版本只适用于RichFaces的特定版本

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

  2. # 2 楼答案

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

    我在JSF方面的经验是非常积极的,这来自于一位在ASP下有多年开发经验的人。网学习曲线仍然陡峭,我无法想象如果没有某种形式的自定义Javascript甚至自定义组件,复杂的企业系统是可能的,但是在我看来,它比ASP更简单。净重和轻得多。他们解决了许多使ASP。NET很难使用(例如,DOM的简单客户端ID、XHTML遵从性)

    我最近开发了一个应用程序,该应用程序将很快投入生产,只使用Primefaces组件、标准Mojarra facelets、一个自定义组件和一些Javascript/隐藏输入字段解决组件框架错误的方法。除了我需要实施的几个变通办法之外,这是非常简单的。我对结果非常满意,利益相关者喜欢它,我绝对会在我的下一个项目中再次使用它

    在组建团队的过程中,我在it方面的实际经验告诉我,最好让一位经验丰富的web应用程序开发人员作为项目的负责人,他在Javascript、CSS和JavaWeb技术方面拥有丰富的经验。团队的其他成员可以是入门级开发人员,并提供少量指导

  3. # 3 楼答案

    你真的需要一个基于组件的框架,比如JSF,还是你在寻找一个更传统的基于web请求的MVC框架?如果是这样的话,您可能想研究一下Apache Struts2Spring MVC。SpringMVC要求您使用核心Spring库

  4. # 4 楼答案


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

  5. # 5 楼答案

    Do you know a simpler rendering engine for Java EE?

    JSF是主流JavaEE中最强大的表示层技术。只有在引入“复合组件”之后,这才成为现实。然而,鲜为人知的HybridJava解决方案虽然功能强大,但比JSF更简单