在本文中,我们将讲述在现有的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模块没有发现”。

更多相关文章

  1. 如何在单击按钮时将桌面应用程序导航到系统中设置的默认邮件提供
  2. Angular 2快速入门 - 我的应用程序组件未加载
  3. 如何访问远程节点。浏览器中的js应用程序,而不是本地主机
  4. 如果外部应用程序更改了持久模型(服务器数据库),AngularJS可以自
  5. 在两台服务器上有效地在两个Django应用程序之间进行通信(多租户)
  6. 如何停止Py_Initialise应用程序的崩溃?
  7. 轮询Web服务的最佳方式(例如,对于Twitter应用程序)
  8. 乘客的Django应用程序显示空主页
  9. 用于在Google App Engine上构建应用程序的最佳开源IDE?

随机推荐

  1. 【Android】RelativeLayout相对布局属性
  2. android下eclipse中This LinearLayout la
  3. android布局RelativeLayout中android:gra
  4. Android 开发————1、Android基础简介
  5. Android Trick 2: Android中的透明属性的
  6. Android UI之GridView
  7. Android 中启动自己另一个程序的activity
  8. Android:安卓资源引用符号的含义
  9. 【译】Android系统简介
  10. [Google Android] Android SDK Tools, Re