从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 ...
随机推荐
- 隐马尔可夫(HMM)、前/后向算法、Viterbi算法
HMM的模型 图1 如上图所示,白色那一行描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,蓝紫色那一行是各个状态生成可观测的随机序列 话说,上面也是个贝叶斯网络,而贝叶斯网络中有这么一种,如下 ...
- [转]HTTPS网络流量解密方法探索系列(一)
前言 分析网络流量总是绕不开HTTPS,因其广泛使用甚至是强制使用逐渐被大众熟知,在保证其安全的同时也提高了对流量进行研究的难度.目前解析HTTPS协议的文章很多,有很多不错的文章可以带着入门,老实说 ...
- json传输二进制的方案【转】
本文转自:http://wiyi.org/binary-to-string.html json 是一种很简洁的协议,但可惜的是,它只能传递基本的数型(int,long,string等),但不能传递by ...
- 如何回收vRealize Automation里被分配出去了的IP地址
在vRealize里写代码部署虚机,时间长了,便出现了很多虚机在vCenter里不存在,但在vRealize里还存在的这台虚机的注册信息的现象.最直接的后果是,这些影子虚机会占着IP池里的IP地址不放 ...
- SharePoint 2016 IT Preview的新feature列表
大致看了一下, 其中关于存储的部分貌似没有. 感觉Hybrid in SharePoint 2016未来可以做的事情比较多吧, 必须赶紧弄个cloud的东西开始玩玩了. Search的部署的更新, 以 ...
- System.Diagnostics.Debug和System.Diagnostics.Trace
在 .net 类库中有一个 system.diagnostics 命名空间,该命名空间提供了一些与系统进程.事件日志.和性能计数器进行交互的类库.当中包括了两个对开发人员而言十分有用的类——debug ...
- (转)C# SendMessage 参数与例子
原文:http://hi.baidu.com/ytmeng/blog/item/25f5de5157931a888c543001.html using System;using System.IO;u ...
- python3 AttributeError: module 'sklearn' has no attribute 'linear_model'
以下导入方式报错 import sklearn lr = sklearn.linear_model.LinearRegression() # 需要导入sklearn的linear_model 修改导入 ...
- nginx高效学习方法
nginx高效学习方法 nginx做为一个高性能的web服务器,相对于apache等服务器来说它的代码量并不是非常庞大,反而非常精简.看过nginx源码的人都知道,nginx将“一切皆为模块”和“所有 ...
- 【中文分词系列】 4. 基于双向LSTM的seq2seq字标注
http://spaces.ac.cn/archives/3924/ 关于字标注法 上一篇文章谈到了分词的字标注法.要注意字标注法是很有潜力的,要不然它也不会在公开测试中取得最优的成绩了.在我看来,字 ...