JSF 1.2升级及jQuery 3.6.3更新:PrimeFaces/RichFaces适配咨询
分步升级指南:从JSF 1.2到兼容最新PrimeFaces/RichFaces版本
一、前置环境检查与清理
- 确认应用服务器(如Tomcat、JBoss)版本支持目标JSF版本:PrimeFaces 13要求JSF 2.3+,RichFaces最新稳定版(4.7.2.Final)要求JSF 2.0+,建议直接升级到JSF 2.3以获得最佳兼容性
- 清理项目冗余依赖:删除WEB-INF/lib下的JSF 1.2、RichFaces 3.3.3、PrimeFaces 1.1相关JAR包,避免依赖冲突
二、升级JSF到2.3版本
- 更新POM.xml中的JSF依赖(以Mojarra为例):
<dependency> <groupId>org.glassfish</groupId> <artifactId>javax.faces</artifactId> <version>2.3.15</version> </dependency>
- 修改
faces-config.xml的命名空间为JSF 2.3标准:
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd" version="2.3">
- 清理web.xml中的过时配置:移除JSF 1.2专属的过滤器、Servlet映射,确保JSF 2.3的默认Servlet映射生效
三、二选一:升级PrimeFaces或RichFaces(不建议同时集成)
选项A:升级到PrimeFaces 13.0.0
- 在POM.xml中添加PrimeFaces依赖:
<dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>13.0.0</version> <!-- 若使用Jakarta EE环境,添加以下classifier;Java EE环境则移除 --> <classifier>jakarta</classifier> </dependency>
- 更新页面中的PrimeFaces标签库声明:
旧声明:xmlns:p="http://primefaces.prime.com.tr/ui"
新声明:xmlns:p="http://primefaces.org/ui" - 替换过时组件:PrimeFaces 13移除了大量旧版组件(如
p:slider的旧用法),需对照组件文档替换为新版实现
选项B:升级到RichFaces 4.7.2.Final
- 在POM.xml中添加RichFaces核心依赖:
<dependency> <groupId>org.richfaces</groupId> <artifactId>richfaces</artifactId> <version>4.7.2.Final</version> </dependency> <dependency> <groupId>org.richfaces</groupId> <artifactId>richfaces-core</artifactId> <version>4.7.2.Final</version> </dependency>
- 移除RichFaces 3.x专属配置:删除
richfaces-config.xml中的旧版本配置项,改用4.x的标准配置 - 检查组件兼容性:部分RichFaces 3.x组件在4.x中行为有变更,需测试并调整页面代码
四、强制使用jQuery 3.6.3
- 禁用组件库内置的旧版jQuery:
- PrimeFaces:在web.xml中添加参数:
<context-param> <param-name>primefaces.EXCLUDE_JQUERY</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>primefaces.MOVE_SCRIPTS_TO_BOTTOM</param-name> <param-value>true</param-value> </context-param> - RichFaces:在web.xml中添加参数:
<context-param> <param-name>org.richfaces.excludeScripts</param-name> <param-value>jquery.js</param-value> </context-param>
- PrimeFaces:在web.xml中添加参数:
- 手动引入jQuery 3.6.3:在页面的
<h:head>中添加:
<h:outputScript name="https://code.jquery.com/jquery-3.6.3.min.js" target="head" />
也可将jQuery文件放入项目资源目录,使用相对路径引入
五、部署调试
- 启动应用服务器,优先查看日志中的类加载错误、配置文件异常信息,逐一修复
- 逐个页面测试AJAX请求、组件渲染功能,重点检查旧代码与新组件库的兼容性
- 用浏览器开发者工具确认当前页面加载的jQuery版本为3.6.3,且无脚本冲突报错
内容的提问来源于stack exchange,提问作者Daniel Foo
相关产品推荐
相关产品推荐

