1.不要盲目使用jsf1.2规范的实现框架:
目前sun,myfaces都推出了jsf1.2规范的实现,但是各种jsf1.2支持并没有跟上,所以小心使用。
jsf1.2的优势主要体现在统一的EL表达式,也就是说你可以在页面上,混合使用只要支持了统一表达式的各种tag标记,同时可以享受jsf在表现层开发上带来的强大支持,这就又需要两个规范的支持,一个是jsp规范,一个是jstl规范,jsp2.1规范支持统一EL,它在tomat6.0.14以后才开始支持,glassFish默认支持,这些都是基础设施,jstl把不同的taglibs定义了一个规范,你可以选择各种实现了jstl规范的taglibs框架,目前大多数使用的是apache 带的标准实现,但是apache仍然没有推出jstl1.2规范的实现,只有jstl1.2规范以后开始支持统一EL,目前可能只有glassfish有jstl1.2的默认实现,我没有试过能不能复用在其他容器下,但是在没有验证之前,请斟酌使用,jsf1.2在统一EL方面的常用应用就是和jstl标记混合。如果你的项目仍然是tomcat5.5或者jboss的容器,使用jsf1.2没有多大优势!而且jsf1.2虽然推出了不同的实现框架,但是增强框架仍然没有看到,myfaces基于jsf1.2的 Tomahawk 还没有推出支持1.2规范的实现,如果仅仅使用sun的标准实现和myfaces的标准实现,在项目中你会步履维艰!
2.如果没有商业jsf框架选择,请选择myfaces的增强框架Tomahawk
sun的标准实现和myfaces的标准实现都是针对规范该有的内容进行实现,并没有在组件方面进行必要的增强,这也是我主要使用Tomahawk这种对组件增强框架的原因。
3.现阶段不要相信IDE工具支持
netbeans的可视化操作使用的是自己的jsf实现,没有myfaces框架的支持,需要等到6.0推出才能验证它的优势,其他包括商业工具,使用后错误很多,感觉就是在测试我们的接受能力,现阶段我对jsf的可视化工具不抱希望,如果你有信心,可以试试工具!现阶段我推荐的方式是jsf手动开发,在开发中积累经验!
4.不要随意使用ajax支持的jsf组件。
如果你是web2.0的支持者,现阶段还是不要用jsf好,jsf是下一代web2.0的主导。如果你是标准的企业开发,建议使用标准方式进行页面请求。jsf最大的贡献不是支持ajax,而是内部实现了一个可以透明化http无状态的机制,这种机制让我们在开发上高度关注组件化业务,让我们的开发能走的更远,而使用ajax在理论上和标准方式一样,在服务端具有统一的模型处理,但是javascript在工程开发上是高度的复杂和麻烦,jsf在处理纯html上在现阶段也是常常出现一些让人接受不了的问题,有时候需要自己手动Hack,但是好在html还不复杂,如果页面端大量javascript,你怎么办,这还不算请求带来的问题,ajax框架本身的质量!
6.如果项目中决定使用jsf,请找一个能拿的住jsf的人,整个开发不仅仅会使用jsf,还有混合使用其他页面技术,如果这个人对表现层的理解包括jsf的理解不够,项目在很多方面的质量会有折扣,但是对于整个开发团队使用jsf会比使用其他表现层技术更简单,更高效,开发质量也会更高,这都要看jsf负责人的技术应变能力了!
5.还是老调重提,在项目中最好加入seam的支持,会让jsf的开发变的简单!