JAVA中server有什么作用_JavaServerFaces2.0的主要缺点是什么?

JSF2.0的缺点?老实说,当你没有扎实的背景知识的时候,除了相对陡峭的学习曲线基本Web开发(HTML/CSS/JS、服务器端与客户端等)和BASIC JavaServletAPI(请求/响应/会话、转发/重定向等),没有想到严重的缺点。JSF在其当前版本中仍然需要消除它在早期获得的负面映像,在这个过程中有几个严重的缺点。

JSF 1.0(2004年3月)

这是最初的释放。它充斥着你不想知道的核心和性能领域的bug。您的Web应用程序并不总是像您直觉所期望的那样工作。作为开发者,你会痛哭流涕。

JSF 1.1(2004年5月)

这是错误修正版。表现仍然没有多大改善。还有一个主要的缺点:您不能在JSF页面中完美地内联HTML。呈现所有普通的普通HTML以前JSF组件树。你需要把所有普通香草包在里面标记,以便将它们包含在JSF组件树中。虽然这是按照规范,但这已经受到了许多批评。另见A.O.。JSF/Facelets:为什么将JSF/Facelets与HTML标记混合使用不是一个好主意?

JSF 1.2(2006年5月)

这是RyanLubke领导的新JSF开发团队的第一个版本。新团队做了很多出色的工作。规范也有变化。主要的改变是视图处理的改进。这不仅使JSF完全脱离JSP,因此可以使用与JSP不同的视图技术,而且还允许开发人员在JSF页面中内联普通的普通HTML,而无需使用标签。新团队的另一个主要重点是提高业绩。在Sun JSF参考实现1.2的生存期内(该实现代号为银鲈自从Build1.2_08(2008年左右)以来,几乎每个版本都附带了(主要的)性能改进,以及通常(次要的)错误修复。

JSF1.x(包括1.2)的唯一严重缺点是在请求和会议范围,所谓的谈话瞄准镜。这迫使开发人员在需要在后续请求中保留初始模型数据时,使用隐藏的输入元素、不必要的DB查询和/或滥用会话范围,以便在更复杂的Web应用程序中成功地处理验证、转换、模型更改和操作调用。采用第三方库可以减轻痛苦,在随后的请求中保留必要的数据,如MyFaces Tomahawk 组件,JBossSeam会话范围和MyFaces乐团对话框架

HTML/CSS纯粹主义者的另一个缺点是JSF使用冒号:作为ID分隔符,以确保HTML元素的唯一性。id在生成的HTML输出中,特别是当一个组件在视图中被重用不止一次时(模板、迭代组件等)。因为这是css标识符中的非法字符,因此需要使用\若要在css选择器中转义冒号,则会产生丑陋和奇怪的选择器,如#formId\:fieldId {}甚至#formId\3A fieldId {}..另见如何在CSS选择器中使用JSF生成的带有冒号“:”的HTML元素ID?然而,如果你不是一个纯粹主义者,也要阅读默认情况下,JSF生成不可用的ID,这些ID与web标准的css部分不兼容。.

而且,JSF1.x并没有附带Ajax工具。这并不是一个技术上的劣势,但是由于在这段时间内Web2.0的炒作,它变成了一个功能上的劣势。埃萨德尔很早就引入了Ajax4jsf,它在过去几年中得到了彻底的开发,并成为了里奇法斯组件库另一个组件库也带有内置的ajax功能,众所周知的是ICE面.

在JSF 1.2生存期的一半时间里,引入了一种新的基于XML的视图技术:光斑..这在JSP之上提供了巨大的优势,特别是在模板领域。

JSF2.0(2009年6月)

这是第二个主要版本,AJAX作为热门词。有很多技术和功能的改变。JSP作为默认的视图技术被Facelets所取代,Facelets被扩展为使用纯XML创建自定义组件的功能(所谓的复合构件)。另见为什么从JSF2.0开始,作为视图定义语言,Facelets比JSP更受欢迎?

AJAX功能是在组件,它与Ajax4jsf有很多相似之处。注释和约定过配置增强被引入到杀长篇大论faces-config.xml尽可能多地归档。此外,默认的命名容器ID分隔符字符:变得可配置,所以HTML/CSS纯粹主义者可以松一口气。你所需要做的就是把它定义为init-param在……里面web.xml名字javax.faces.SEPARATOR_CHAR并确保您在客户机ID中的任何位置不自己使用该字符,如-.

最后但并非最不重要的是,引入了一个新的范围,视点瞄准镜。如前所述,它消除了JSF1.x的另一个主要缺点。你只要声明一下豆子@ViewScoped为了在不费事的情况下启用会话范围,在后续(会话)请求中保留数据的所有方法。一个@ViewScopedbean将在随后提交并导航到同一个视图(独立于打开的浏览器选项卡/窗口!)时存活,无论是同步还是异步(Ajax)。另见托管bean中视图和请求作用域的区别和如何选择正确的bean范围?

尽管几乎消除了JSF1.x的所有缺点,但也有JSF2.0特有的bug可能成为展示的障碍。这个@ViewScoped标记处理程序失败因为鸡蛋问题在部分状态下保存。这在JSF2.2中得到了修正,并在mojarra2.1.18中得到了支持。也传递像HTML 5这样的自定义属性data-xxx不支持。在JSF2.2中,这是通过新的通元素/属性特性来修正的。此外,JSF实现mojarra它自己的一套问题..相对来说,它们中的很多都与有时有违直觉的行为,新的部分状态保存实现而执行不力的闪存范围..其中大多数都是用mojarra2.2.x版本修复的。

在JSF2.0的时候,原始面在jQuery和jQueryUI的基础上进行了介绍。它成为最流行的JSF组件库。

JSF 2.2(2013年5月)

随着JSF2.2的引入,HTML 5被用作热门词,尽管在所有早期JSF版本中技术上都只支持HTML 5。另见JavaServer面临2.2和HTML 5支持,为什么仍然使用XHTML..最重要的新JSF2.2特性是对自定义组件属性的支持,从而打开了一个可能性世界,例如自定义无表单选按钮组.

除了实现特定的bug和一些“恼人的小事”,比如无法在验证器/转换器中注入EJB(已经在JSF 2.3中修复了)之外,JSF2.2规范中并没有真正的缺点。

基于组件的MVC与基于请求的MVC

有些人可能会选择JSF的主要缺点是它几乎不允许对生成的HTML/CSS/JS进行细粒度控制。那不是JSF自己的,那只是因为组件基MVC框架,而不是一个基于请求(行动)MVC框架如果在考虑MVC框架时,高度控制HTML/CSS/JS是您的主要需求,那么您就不应该考虑基于组件的MVC框架,而应该考虑基于请求的MVC框架,如SpringMVC..您只需要考虑到,您需要自己编写所有的HTML/CSS/JS样板。另见请求MVC与组件MVC的区别.

另见:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值