RichFaces 3.3.3 和 JSF 2.0

来源:互联网 发布:客户管理系统Java 编辑:程序博客网 时间:2024/06/01 09:29

在本文中,我们将讲述在现有的JSF2应用程序中使用RichFaces 3.3.3+的有关问题的解决的方法。在开始你的迁移前,请注意了,因为支持JSF2的应用仅能使用3.3.x的版本,这可能会影响到你的迁移计划。如果要完全支持JSF2,我们推荐你使用RichFaces 4.0.0版本,不过,它仍然在开发过程中。

 

项目设置

1、  首先,我们需要添加库到项目

a)         RichFaces-project站点的下载栏目下载RichFaces 3.3.3Final 二进制包

b)         libs文件夹中用新的替换旧的richfaces-*

                         i.              有两个richfaces-impl jar文件包

                       ii.              只需增加richfaces-impl-jsf2 jar

2、  web.xml中使用下面的context-param去掉VDL viewhandler

<context-param>

     <param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>

     <param-value>true</param-value>

</context-param>

         如果你想看一个使用这种方式配置的示例应用程序,点此下载richfaces-demo-jsf2

        

Photoalbum实例(运行于AS6中)

关于运行在Jboss AS 6中的JSF2应用-photo album的介绍,请看Deploying Photo Album Example to JBoss AS 6 with JSF 2

 

限制清单

 

我们认为3.3.3版是RichFace开始支持JSF2的第一步,这里需要作出一个权衡,是使用不完全支持JSF2.03.3.x,还是4.0,真正完全支持JSF2.0的是RichFaces4.0,这也是我们不懈努力要推出4.0的一个原因

更多关于RichFaces JSF 2.0 的信息,请看博客JSF 2.0 Roadmap For RichFaces

 

RichFaces3.3.3不支持用facelets(VDL)构建的JSF2

RichFaces的标记处理类仍然依赖于Facelets1.1.15

 

JSF2 native ajax问题

F:ajax

RichFaces3.3.3不支持VDL,所以它不支持任何新的标记,比如f:ajax,h:outputScript等,你应该继续使用RichFaces相应的标记来代替。

 

JSF ajax javascript api

由于针对AJAX删除的组件,JSF2不提供清除脚本对象的机制,通过JSF native ajax更新组件时,可能会导致内存泄露。如果你碰到内存问题,很可能因此引起。

 

JSR-303支持

当运行在兼容模式时(VDL关闭而扩展facelets被使用),JSF2不会注册BEAN验证器。这不是RichFaces3.3.3的限制引起的,而是移植到JSF2时应该被考虑的。

 

注释扫描

在初始化JSF2时,ConfigManager检查faces-config存在,然后看是否它的version等于2.0。也就是说,为了在你现有的应用程序中让JSF注释其作用,你应该:

a)         在应用中没有faces-config

b)         或者应用程序配置的version应该改为2.0

 

运行在GlassFish服务器中

虽然不是RichFaces的一种限制,但是如果把JSF2应用程序部署在GlassFish v3中时,你必须把你的应用程序描述符定义为2.5的版本:

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

如果不这样的话,在发布时,你可能会看到这样的信息“EJB模块没有发现”。

原创粉丝点击