Seam 其实本身是无关JSF的,但是因为它从一开始就建在JSF上面,所以也不得不对JSF的一些问题进行修复。
Seam的工作需要分开来细说:
3.1 page行为 //TODO
3.2 Context-filter //TODO
3.3 RESTful(重建页面参数) //TODO
3.4 异常处理 //TODO
3.5 跨越重定向的状态 //TODO
现在我们有了JSF的加减法:
JSF - (全页面刷新) + Ajax4Jsf - Jsp + Facelets + 全局Page行为 + Context-filter + Restful参数绑定 + 可定制异常 + 跨越重定向的状态 = “ -_- ! 一大碗炸酱面”
就好像一件黄金圣衣,经过无数次修补,虽然还能再用,但是实在不如重铸了。
JSF 需要一套整合的模型,使这些各个分散的部分重新以一种整体的局面展现出来。它需要把多余的东西抛弃掉,把新的内容以更集成的方式融在一起,因为光是熟悉这些不同分散的部分,理解它们之间的关系,知道哪里会有BUG,哪里则可以避免这些BUG,并且在运用的时候总是用对该用的东西,这已经使人非常头大了。 JSF作为标准来说是成功的,在这一标准下有了如此多的可以插拔的第三方软件。 但是该是时候对这些零散的东西统一了。就好像ubuntu在统一的指导思想下集合了尽可能多的零散的开源软件,使它们可以被一种简单并且相似的方式获取,使我不需要像在Gentoo里安装任何一个东西都要搜索搜索再搜索,了解它的来源,了解它的BUG,了解我的硬件是否支持。作为用户,我不想学习,我想有明白的人替我作决定,那是最好的,特别是当这些决定make sense的时候。
现在的Seam正是朝这个方向走的。能走这样的路,得有两个条件,一是有众多零散的可用的东西,但是它们缺乏统一的形式(但它们得有能够统一的背景,比如ubuntu下是posix标准,Seam下是jsf标准);二是有对该领域非常熟悉的人来做这样的事情。上面提到的Seam对JSF的改进其实只是Seam框架下非常小的一部分,是Seam在向这个目标前进的必须的一个步骤,是在Seam内核基础上水到渠成的东西,而远非Seam的全部。正如Seam的名字所示:缝合;正如ubuntu的名字所示:分享与同在。它们的制定者在决定之初即是向着这一目标前进的。
已经early draft review的JSR 299, 即是借鉴了Seam(以及其它比如Guice)的一个标准,试图把这一方向推得更远。
至于对于缝合所需要的本事,Seam的conversation模型,CoC理念,元注解配置+xml补充方式,动态双向注入模型(不同于spring的静态单向注入),扩展了的EL等,是其基础。内部事件和监听模型,和drools的安全集成模型,和hibernate-seach, hibernate-validation, seam-remoting, jbpm,groovy,itext的集成,是其在基础之上的应用。这些则需要另外的文章来写了。//TODO//TODO//TODO
JSF的加减法与Seam
0
相关文章