从JSF看XPages的优点
1. 不能直接在JSP页面里插入HTML 在1.2以前,JSF在视图上只能采用JSP。传统的JSP页面是由混合的HTML和Java语言标记组成的。JSP引擎先将页面转化成一个servlet,浏览器请求该页面时Java服务器运行servlet在响应流中生成HTML。而在JSF里,页面被划分成一个个控件,这些控件在一起组成一个树结构,相当于树干的最外层容器就是代表页面整体的视图。页面被请求时,Java服务器先载入和构造出组件树,然后按顺序每个组件生成(render)它的HTML代码。虽然原则上,JSF页面可以完全由控件组成,但是如果现有的服务器组件不敷应用,或者想要更精细地直接控制前台的HTML、JavaScript和CSS等内容,就仍然需要手工编写这些原始的前台代码。这里我们遇到一个问题,从前面可以看到传统的JSP页面发出原始HTML和JSF里由组件生成的HTML两个过程没有统一,在JSF页面发出HTML的过程中,前者在后者之前。这样分离的过程,会使浏览器获得的HTML与从JSF页面代码预料的HTML结构上有差异,可能引起显示和功能上的错误。为了把原始HTML包含到JSF组件树里,需将它们包装到<f:verbatim>标签中,这样做是很烦琐的。 JSF 1.2取消了JSP在JSF视图选择上的唯一性,并且允许直接在页面里插入原始HTML。JSF 2.0采用以XML写的facelet作为默认的视图技术。 XPages的页面用XML写成,并可以直接插入原始HTML。
2. 缺少视图效用域(view scope) JSF 1.1只包含了请求效用域(request scope)和会话效用域(session scope),这使得对同一个页面的多次提交之间共享数据不能简单完成,要借助隐藏输入元素,或者滥用会话效用域。 JSF 1.2没有改善。JSF 2.0增加了视图效用域(使用@ViewScoped标记)。 XPages补充了视图效用域,在服务器端JavaScript里可以直接使用viewScope,也可以在faces-config 里配置一个managed bean的managed-bean-scope为view。
3. 使用冒号作为HTML元件的ID分隔符 为了保证HTML元件ID的唯一性,JSF采用类似的命名空间的办法,在每个HTML元件的ID前逐层附加父元件的ID,例如view:_id1:callback2:image3。JSF 2.0以前这个分隔符都是冒号(:),因为冒号在CSS标识符(identifier)里是不能使用的,需要转义(escape),这就为写CSS时使用CSS的选择器(selector)带来不便,比如要给上面给出ID的元件编写CSS,就会有类似这样的代码:view\:_id1\:callback2\:image3 {}。 JSF 2.0中这个分隔符变得可以配置。 XPages里这个分隔符仍然是硬编码的无法配置。不过XPages里显示元件的CSS基本上都由设定对应的控件的属性和使用主题(theme)来自动完成。
4. 没有现成的(out-of-box)Ajax功能(feature) JSF 1.1和1.2都没有现成的Ajax功能。JSF 2.0则跟上了web 2.0的潮流。 XPages提供了有限的Ajax功能,比如为文本框的即时输入提示。
从JSF看XPages的优点的更多相关文章
- jsf简介
JSF实现了基于web的以下三个梦想 1.java程序员不必顾虑HTTP的细节,可以按照原本熟悉的事件驱动模型来设计后台系统,并通过一个能担保数据类型无误的数据传递接口将后台系统与前台界面结合在一起. ...
- JSF开篇之Login案例
开发环境:Myeclipse+JDK5+MyEclipse Tomcat+jsf2.2.8 JSF看起来和STRUTS还是有些像的,刚开始还是遇到一点问题:资源包的存放路径及文件访问路径. 开发Log ...
- Reactjs-JQuery-Vuejs-Extjs-Angularjs对比
写在前面 前端越来越混乱了,当然也可以美其名曰:繁荣. 当新启动一个前端项目,第一件事就是纠结:使用什么框架,重造什么轮子? 那么,希望看完此篇,能够给你一个清晰的认识,或者让你更加地纠结和无所适从 ...
- [No00007D]2016-面经[上]
面试常见问题: 题一:"请你自我介绍一下" 思路:1.这是面试的必考题目.2.介绍内容要与个人简历相一致.3.表述方式上尽量口语化.4.要切中要害,不谈无关.无用的内容.5.条理要 ...
- 浅析angular,react,vue.js jQuery使用区别
前端越来越混乱了,当然也可以美其名曰:繁荣.当新启动一个前端项目,第一件事就是纠结:使用什么框架,重造什么轮子? PS:大牛留言讨论那么,希望看完此篇,能够给你一个清晰的认识,或者让你更加地纠结和无所 ...
- mount不是很熟悉 转载文章了解下 转自http://forum.ubuntu.org.cn/viewtopic.php?f=120&t=257333
纯粹针对刚刚解封开包的新新手,老鸟们请自觉绕行,否则浪费你的时间你非要逼我做谋杀犯可不光我的事你还没地方说理去.如果你正好是个崭新的新手,就耐心的花点时间看看吧,至少大概看看,不要在一个陌生又黑暗的到 ...
- 【转】扫盲 同步利器、分布式网盘--BT Sync
原文地址:http://program-think.blogspot.com/2015/01/BitTorrent-Sync.html先向大伙儿宣布个好消息——经过多位热心读者的大力支持,经过几天的努 ...
- 扫盲 BT Sync——不仅是同步利器,而且是【分布式】网盘
先向大伙儿宣布个好消息-- 经过多位热心读者的大力支持,经过几天的努力,已经完成了"微软网盘"到"BitTorrent Sync"的迁移工作. 再次向这批热心读 ...
- 【Todo】LR-逻辑回归
因为逻辑回归对于计算广告学非常重要.也是我们平时广告推荐.CTR预估最常用到的算法.所以单独开一篇文章讨论. 参考这篇文章:http://www.cnblogs.com/sparkwen/p/3441 ...
随机推荐
- 洛谷 P1138 第k小整数
题目描述 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000. 输入输出格式 输入格式: 第一行为n和k; 第二行开 ...
- C++ 友元类使用 (friend)
C++中私有变量对外部类是不能直接访问的,也是不能继承的. 使用友元类可以访问类中的私有方法.私有变量,虽然对类的封装有一定的破坏,但是有时也是很实用的. 在实际中,在修改已有代码时,为了不大改动已有 ...
- 用Visual C#来清空回收站(1)
视窗操作系统的回收站是对文件一种保护措施,他主要是作用是不言而喻的.在新的视窗2000系统之中,当我把文件删除到回收站中以后,按动"清空回收站"按钮,想清空回收站,此时往往提示&q ...
- iOS runtime探究(三): 从runtime開始理解OC的属性property
你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639303 本文主要解说runtime相关知识, ...
- Ext4中获取下拉框的值
var supplierCombo = Ext.getCmp("rkSupplierCombo_id"); var supplierId = supplierCombo.getV ...
- JPA(六):映射关联关系------映射单向一对多的关联关系
映射单向一对多的关联关系 新建项目项目请参考<JPA(二):HellWord工程>,基于上一章讲解的<JPA(五):映射关联关系------映射单向多对一的关联关系>中的例子进 ...
- Java-JUC(四):同步容器介绍
同步容器简介 针对容器我们知道有HashMap,HashTable,其中HashMap是一个非线程安全的,HashMap在并发执行put操作时会引起死循环,导致CPU利用率接近100%.因为多线程会导 ...
- Mac关闭摄像头
为了防止黑客入侵,我们可以手动执行命令,关掉摄像头设备的访问权限,让黑客去看黑夜吧. Mac关闭禁用摄像头的方法,打开终端,拷贝如下代码,回车,输入管理员密码,再次拷贝,回车. sudo chmod ...
- hadoop hue切换中文版
搭建了Hue之后发现只有英文的界面,非常不开心,于是百度谷歌了一大堆也没有发现可靠的办法,就自己上手了一把,亲测可行. 英文版: 中文版: hue切换使用中文版的方法如下: 1.修改配置文件 vi / ...
- 持续集成之代码质量管理-Sonar [三]
转载:https://www.abcdocker.com/abcdocker/2053 摘要 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工 ...