Primefaces 本机上传不适用于 PrettyFaces(OCPSoft 重写)

问题描述 投票:0回答:1

我需要将我的应用程序迁移到 Jakarta EE 10,以下是我当前的配置:

  • JDK 1.8
  • Primefaces 12.0.x
  • 漂亮面孔3.3.3

我已经用新的依赖项更新了我的

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")"

有人遇到过这个问题吗?

jsf file-upload primefaces prettyfaces jakarta-migration
1个回答
0
投票

我们有和你一模一样的问题。 我们希望将环境从 Primefaces 8 迁移到 Primefaces 10(甚至 14),同时将 java 从 11 升级到 21,并从 javax 迁移到 Jakarta。

我们从 web.xml 中删除了 Primefaces 和 PrettyFaces 的过滤器和过滤器映射。

我们可以看到,从 PrettyFaces URL 使用 fileupload 不起作用,支持 bean 永远不会被调用。当直接访问 .xhtml 文件(无需重写 URL)时,效果很好。 我们尝试为多部分请求编写自己的过滤器,但无法使其工作(如何将上传的文件发送回后台?)。

您能详细解释一下您的 javascript 解决方案吗?我们尝试类似的事情失败了。

谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.