我需要将我的应用程序迁移到 Jakarta EE 10,以下是我当前的配置:
我已经用新的依赖项更新了我的
pom.xml
,用 OCPSoft Rewrite 替换 PrettyFaces,因为该版本与 Jakarta 不兼容。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.source>21</java.source>
<java.target>21</java.target>
<rewrite.version>10.0.2.Final</rewrite.version>
<jakarta.version>10.0.0</jakarta.version>
<primefaces.version>14.0.4</primefaces.version>
</properties>
<dependencies>
<dependency>
<groupId>org.ocpsoft.rewrite</groupId>
<artifactId>rewrite-servlet</artifactId>
<version>${rewrite.version}</version>
</dependency>
<dependency>
<groupId>org.ocpsoft.rewrite</groupId>
<artifactId>rewrite-config-prettyfaces</artifactId>
<version>${rewrite.version}</version>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>${primefaces.version}</version>
<classifier>jakarta</classifier>
</dependency>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
<version>${jakarta.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
我没有修改我的bean,
@URLMapping
注释保持不变并且可以正常工作;但是,文件上传不再起作用,因为 PrettyFaces (OCPSoft Rewrite) 拦截了调用,因此不会将其传播到 bean。我无法使用 Apache Commons,因为它与 Jakarta 版本不兼容,所以我需要使用原生上传:
<context-param>
<param-name>primefaces.UPLOADER</param-name>
<param-value>native</param-value>
</context-param>
一个解决方案是添加此 JavaScript 并修改表单的操作,但该解决方案迫使我查看所有页面。
"$("form").attr("action", "#{request.contextPath}/example.xhtml")"
有人遇到过这个问题吗?
我们有和你一模一样的问题。 我们希望将环境从 Primefaces 8 迁移到 Primefaces 10(甚至 14),同时将 java 从 11 升级到 21,并从 javax 迁移到 Jakarta。
我们从 web.xml 中删除了 Primefaces 和 PrettyFaces 的过滤器和过滤器映射。
我们可以看到,从 PrettyFaces URL 使用 fileupload 不起作用,支持 bean 永远不会被调用。当直接访问 .xhtml 文件(无需重写 URL)时,效果很好。 我们尝试为多部分请求编写自己的过滤器,但无法使其工作(如何将上传的文件发送回后台?)。
您能详细解释一下您的 javascript 解决方案吗?我们尝试类似的事情失败了。
谢谢你。