当使用jQuery和AngularJS等JavaScript库实现UI时,JSF的需求是什么

sus*_*ani 114 user-interface jsf javascript-framework

我正在阅读JSF,它是一个UI框架并提供了一些UI组件.但它与jQueryUI,AngularJS,ExtJS甚至纯HTML,CSS和JavaScript中可用的组件数量有何不同或更好.

为什么有人要学习JSF?

Bal*_*usC 147

JSF到普通JSP/Servlet/HTML/CSS/JS就像jQuery一样简单JS:用更少的代码做更多事情.以PrimeFaces(基于jQuery + jQuery UI)为例,浏览其展示以查看完整的代码示例.BootsFaces(基于jQuery + Bootstrap UI)也展示了完整的代码示例.如果你仔细研究这些例子,那么你会发现你基本上需要一个简单的Javabean类作为模型,一个XHTML文件作为视图.

请注意,您不应该将JSF视为单独的HTML/CSS/JS的替代,您还应该考虑服务器端部分(特别是:JSP/Servlet).JSF消除了收集HTTP请求参数,转换/验证它们,更新模型值,执行正确的Java方法来处理业务内容以及生成HTML/CSS/JS样板代码的所有样板的需要.使用JSF,您基本上最终将XHTML页面作为视图定义,将Javabean类作为模型定义.这大大加快了开发速度.

与基于每个组件的Web MVC框架一样,您在JSF中对渲染的HTML/CSS/JS进行了不那么细粒度的控制.添加自定义JS代码并不是那么容易,因为你必须考虑服务器端的JSF视图状态(例如,在JS端启用禁用按钮不会启用JSF端的按钮,这反过来又是巨大的安全优势).如果这是一个主要的showstopper,那么请寻找一个基于动作的Web MVC框架,如Spring MVC.你只考虑到,你必须写所有的HTML/CSS/JS代码的帐户你自己.此外,如果您从Facelets退回到JSP,您也会错过高级模板功能.

另一方面,如果您有一个基于JSP/Servlet/HTML/CSS/JS/jQuery的大型网站,并且您想将重复的JSP/Servlet/HTML/CSS/JS/jQuery样板代​​码重构为可重用的组件,那么其中一个解决方案是JSF.自定义模板,标签文件和组件可以为此提供帮助.从这个角度来看,JSF位于JSP/Servlet/HTML/CSS/JS/jQuery之上(这也是为什么在深入了解JSF之前理解这些基础知识非常重要的原因).

您可以在此处找到基于JSF的真实启动项目:Java EE Kickoff App.你会发现它包含在JSF旁边,就像HTML5,CSS3jQuery一样好.

也可以看看:

  • 在JSF 2.0+中,xml不是必需的. (33认同)
  • 用更少的代码做更多事情?但是有了更多的xml ...这是一个权衡...另外,它会让你失去灵活性 (15认同)
  • 我们在JSF 2.0中有注释 (5认同)
  • 同意 JSF 是服务器端的东西,对 HTML 具有强大的控制能力。 (2认同)

And*_*ite 28

创建JSF是为了让java商店不必学习像jQuery这样的东西并构建复杂的JS,而是专注于纯Java堆栈.在一个时间就是金钱的世界里,许多地方已经专注于Java开发,堆栈中少一个语言/片段使得培训和维护更快,从而更便宜.

我将补充说,JavaScript很容易成为大型团队的维护噩梦,特别是如果项目中的某些开发人员不是高度精通网络的话.

  • 即使你对JQuery非常熟悉,JSF仍然非常有用.它提供了一种将服​​务器端代码连接到客户端表示的简便方法.一些Facelets的复合组件只是围绕HTML和JS(包括JQuery)的一个相当薄的包装器.它们构建起来轻而易举,通常只需简化整个客户端 - 服务器端连接. (8认同)
  • 这一切都取决于你要解决的问题以及你正在解决的问题. (2认同)
  • 没有,它只是提供了一种“不同”的方法来解决相同的问题。 (2认同)

Dan*_*lor 23

使用Javascript和jQuery等框架,您可以获得充分的灵活性和完全控制.使用ext等,您将失去很多控制权并且必须适应框架.使用JSF,您完全失去控制,必须完全适应框架.你在生命周期等中被调用,最后你无法控制服务器的调用和不执行调用.如果你要做一些被认为是"特殊"的事情,你就处于非常困难的境地.在JSF世界中,即使是多列表排序或只能键入有限字符集(例如数字字段)的字段等基本内容也被视为"特殊".

但是,您拥有的灵活性越多,您可以做出的错误或不良做法就越多.高灵活性仅适用于高度智能的程序员,其他人则会将项目变成无法控制的噩梦.

但是,由于JSF及其灵活性有限,总是只有少数(甚至只有一种)正确的做法.你是非常有限的,你不能做捷径,你必须写更多的XML等 - 但是当适应标准时,对无经验或低技能程序员将产生的代码有更好的控制.因此,大公司喜欢JSF,因为它对他们来说"更安全".

当我从GWT转到JSF时,我感到很震惊,对我来说有多少事情,被认为是非常不典型的,有多么简单的事情很难实现.更重要的是,即使进行最小的更改,例如在标签后添加':'符号,在GWT/jQuery驱动的应用程序中将更改一个函数生成标签,需要更改具有本地化属性的数十个文件,这甚至不被除了我以外的任何人

  • PrimeFaces基于jQuery,因此您在客户端具有很大的灵活性,PrimeFaces组件在客户端和服务器端提供许多钩子作为事件回调供您自定义.Javascript API可以覆盖和CSS以及自定义外观.:label可以在web.xml中全局配置,以获得更友好的jQuery字符. (7认同)

小智 10

我强烈反对jsf添加任何东西.它只会增加开销.在服务器上做ui的东西是我听过的最荒谬的事情.大型团队的javascript工作得很好 - 它被称为重用代码.

只需将jquery包装在一些jsp标签中,这就是你所需要的,而且你已经完成了,并且不会忍受.jsf和richfaces的.shackles和scalability问题.

  • JSF面向基于表单的应用程序.jQuery很不错(很多,很多流行的JSF组件库,比如PrimeFaces,RichFaces和IceFaces甚至在封面下使用它),但是jQuery并没有以任何方式简化服务器端的处理表单提交.使用普通的JSP/Servlet只会导致糟糕的样板代码.同样,JSF不仅是HTML/CSS/JS,还有JSP/Servlet. (13认同)
  • 我想如果你在JSF上阅读更多关于JSF的内容,特别是JSF页面的生命周期,你可能会改变主意.然后,你可能不会. (2认同)

arg*_*g20 9

使用JSF的好处不仅在于生成xhtml + css + js.有时,JSF会对您可以生成的标记施加限制,就像任何基于组件的框架一样.但JSF不仅仅是为了它,它的生命周期也很有帮助.验证输入后,它可以更新模型并同步您的服务器端bean.你只需说"无论用户在这里输入什么,检查它是否为数字,如果是,则将其存储在对象XX中的属性YY中",JSF将完成所有这些操作.

所以是的,您仍然可以使用JQuery,JS等.但是,在编写服务器端代码时,JSF提供了许多好处,并且可以节省大量的锅炉.


dbr*_*rin 6

在使用JSF,Spring MVC,Struts,Grails,JQuery和ExtJS之后,我认为Grails + ExtJS是一个强大的组合.

我会在任何一天选择Grails而不是JSF.我喜欢ExtJS作为客户端框架和库的完整性,但它带来了比JQuery更陡峭的学习曲线.


归档时间:

查看次数:

51110 次

最近记录:

7 年 前