推荐使用的JSF增强功能第2章中的HelloWorld示例演示了如何采用标准的EJB3和JSF构建一个Seam应用程序.
Seam选择JSF作为其Web框架有如下几点原因:JSF是JavaEE5.
0中的一种标准技术,得到了广大用户和开发商的大力支持,所有的Java应用服务器都支持JSF;JSF完全基于组件,所拥有的组件开发商社区生机勃勃;JSF还包含了一种功能强大的统一的表达式语言(EL,使用#{.
.
.
}标记),可以在贯穿整个应用程序的Web页面、工作流描述以及组件配置文件中使用;JSF还得到了许多主流Java集成开发环境中的可视化GUI工具的大力支持.
然而,JSF也存在着一些问题和设计不合理之处,例如屡遭批评的过于冗长和过于以组件为中心(即未能做到对HTTP请求透明).
此外,作为一个标准框架,JSF的更新也比民间的开源项目(例如Seam本身)更为缓慢,也正因为如此,JSF在纠正设计问题和添加新功能方面也不如开源项目灵活.
所以,Seam通过与其他开源项目合作来不断改进和增强JSF.
对于Seam应用程序,本书强烈建议开发人员使用如下JSF增强功能:使用Facelets作为Web页面框架.
按照FaceletsXHTML规范编写Web页面,而不是按照JSP规范编写.
Facelets比JSF框架中的标准JSP具有更多优点,详情请参阅3.
1.
1节.
使用SeamJSF组件库以支持特定的JSF标记,这些JSF标记将充分利用Seam特有的UI功能,以及Seam的JSF扩展表达式语言.
设置Seam过滤器,以捕获和管理JSF重定向、错误消息和调试信息等.
本书的余下部分将假设您已经安装并启用上述3项JSF增强功能(安装指南请参阅3.
3节).
8.
1.
1节将解释在JSF页面呈现过程中Seam如何支持惰性加载,以及Seam如何对JSF消息的使用进行扩展,而不仅仅是简单的错误消息.
本书的第Ⅲ部分将讲述如何把数据组件直接集成到JSFWeb页面中.
这种直接集成使得Seam可以把重要功能添加到JSF中,包括端到端的验证器(第12章)、易于使用的数据表(第13章)、可收藏为书签的URL(第15章),以及自定义错误处理页面(第17章).
本书的第Ⅳ部分将讨论如何将第三方AJAXUI小部件整合到Seam应用程序中.
24.
5节将讨论如何使用jBPM业务流程来管理JSF/Seam应用程序的页面流.
这将使得开发人员能够在页面导航规则中使用EL表达式,并制定与应用程序状态相关的导航规则.
JSF2.
0本章所讨论的许多第三方JSF增强功能都在努力进入即将发布的JSF2.
0规范,因此本章也将帮助开发人员进行面向JSF2.
0的迁移.
使用Seam和此处提到的框架,您现在就可以体验到JSF2.
0的高效率!
本章将首先探讨这些额外的框架如何改进JSF开发体验.
首先讲解如何使用Facelets和SeamUI库开发应用程序.
然后,在3.
3节中将列举出需要对HelloWorld示例做哪些改动,以支持Facelets和SeamUI组件.
这个新的示例项目名为betterjsf,可以在本书源代码包中找到.
可以将该项目作为自己的应用程序的起点.
3.
1Facelets简介JSP(JavaServerPages)实际上是JSF中的一种"视图"技术.
在一个标准的JSF应用程序中,包含了JSF标记和可视化组件的Web页面都可以使用JSP编写.
然而,JSP并不是编写JSFWeb页面的唯一选择.
名为Facelets的开源项目(https://facelets.
dev.
java.
net)可以让开发人员使用XHTML来编写JSFWeb页面.
与JSP相比,XHTML在网页可读性、开发效率、运行时性能等诸多方面均有显著的提升.
尽管Facelets还不是一个JCP(JavaCommunityProcess,Java社区进程)标准,但是仍然强烈建议在Seam应用程序中尽可能地使用Facelets.
3.
1.
1使用Facelets的原因首先,Facelets使JSF的性能提高了30%~50%,因为Facelets绕过了JSP引擎而直接使用XHTML页面作为视图技术.
也正因为这一点,Facelets还避免了JSF1.
1和JSP2.
4规范之间的潜在冲突,JBoss应用服务器4.
x版本支持这两个规范(详情如下).
JSF和JSP之间的潜在冲突在HelloWorld示例中,使用JSP文件(例如hello.
jsp文件)来创建JSF应用程序中的Web页面.
在JSP容器处理这些JSP文件的同时,JSF引擎也对这些文件进行处理.
这样就增加了JBoss应用服务器4.
x版本中JSP2.
0容器和JSF1.
1运行时环境之间发生冲突的可能性.
更多有关这些冲突问题和示例的详细解释,可以参考HansBergsten所著的优秀论文"ImprovingJSFbyDumpingJSP"(www.
onjava.
com/pub/a/onjava/2004/06/09/jsf.
html).
这些冲突可以在JBoss应用服务器5.
x版本中得到解决,在该版本中已经实现了对JSP2.
1及其以上版本和JSF1.
2及其以上版本的支持.
然而,如果您现在使用的是JBoss4.
x版本的应用服务器,那么解决这种冲突的最好方法就是避免使用JSP,而使用Facelets.
其次,开发人员可以在Facelets页面中使用任意XHTML标记.
这样就不再需要将XHTML标记和无格式限制的文本封装到中.
这些标记增加了编写和阅读基于JSP的JSF页面的难度.
第三,Facelets支持在浏览器中调试页面.
如果Facelets在呈现某个页面时发生错误,它就会提示开发人员该错误在源文件中的准确位置,并提供具体的相关上下文信息(详情请参阅17.
5节).
而JSP/JSF对错误发生的处理却是对错误栈进行深入的跟踪,由此可见Facelets的错误处理要高明得多.
最后可能也是最重要的一点,Facelets为JSF提供了一个模板框架.
有了Facelets,开发人员就可以使用类似于Seam的依赖注入模型来组装页面,而无需在每一个页面中都手动添加页眉、页脚和侧栏组件.
关于JSP既然Facelets这么优秀好用,为什么我们还要不厌其烦地使用JSP/JSF组合呢JSP已经是JavaEE中的一种标准技术,而Facelets尚未成为标准.
这就意味着JSP得到多方支持,而Facelets在与某些第三方JSF组件进行集成时还存在着一定的问题.
同时,JSP规范委员会也从Facelets处吸取了不少有益的经验.
下一代JSP将会更好地与JSF协调工作.
3.
1.
2使用Facelets的HelloWorld示例本章前面已经讨论过,一个基本的FaceletsXHTML页面与实现相同功能的JSP页面有着根本的区别.
为了阐明这一点,将HelloWorld示例应用程序(详见第2章)从JSP移植到Facelets,并将新的应用程序放入betterjsf项目.
下面是Web页面的JSP版本hello.
jsp:SeamHelloWorldPleaseenteryourname:将其与下面所述的FaceletsXHTML版本hello.
xhtml做一下比较:SeamHelloWorldPleaseenteryourname:很明显,与JSP页面相比,使用Facelets技术的XHTML页面更加整洁,可读性也更佳,这是因为XHTML页面中没有像JSP页面那样充满标记.
此外,FaceletsXHTML页面中的名称空间声明遵循XHTML标准.
除了这些方面之外,这两个页面看起来类似.
所有的JSF组件标记都是一样的.
3.
1.
3使用Facelets作为模板引擎对于开发人员来说,能够使用XHTML模板可能是Facelets最为吸引人的功能.
接下来查看具体的工作原理.
一个典型的Web应用程序由具有相同布局的多个Web页面组成.
这些Web页面通常都具有相同的页眉、页脚和侧栏菜单.
如果没有模板引擎,开发人员必须在每个页面中重复这些页面元素.
这样就导致了大量包含复杂HTML格式标记的冗余代码.
更为糟糕的是,如果开发人员需要对某个页面元素执行细微的改动(例如改变页眉中的某个单词),就需要编辑所有的页面.
从已知的有关软件开发流程的知识来看,这种复制-粘贴操作最缺乏效率,同时也最容易出错.
7月4日是美国独立日,大致就是国庆节的意思吧。hostodo今年提前搞了个VPS大促销活动,4款便宜VPS,相当于7折,续费不涨价,本次促销不定时,不知道有多少货,卖完为止。VPS基于KVM虚拟,NVMe阵列,1Gbps带宽,自带一个IPv4+/64 IPv6,solusvm管理,送收费版DirectAdmin授权,VPS在用就有效! 官方网站:https://www.hostodo.com ...
justhost怎么样?justhost服务器好不好?JustHost是一家成立于2006年的俄罗斯服务器提供商,支持支付宝付款,服务器价格便宜,200Mbps大带宽不限流量,支持免费更换5次IP,支持控制面板自由切换机房,目前JustHost有俄罗斯6个机房可以自由切换选择,最重要的还是价格真的特别便宜,最低只需要87卢布/月,约8.5元/月起!总体来说,性价比很高,性价比不错,有需要的朋友可以...
mansora怎么样?mansora是一家国人商家,主要提供沪韩IEPL、沪日IEPL、深港IEPL等专线VPS。现在新推出了英国CN2 KVM VPS,线路为AS4809 AS9929,可解锁 Netflix,并有永久8折优惠。英国CN2 VPS,$18.2/月/1GB内存/10GB SSD空间/1TB流量/100Mbps端口/KVM,有需要的可以关注一下。点击进入:mansora官方网站地址m...