文件上载不适用于PrimeFaces 4.0、PrettyFaces 3.3.3和GlassFish 4

文件上载不适用于PrimeFaces 4.0、PrettyFaces 3.3.3和GlassFish 4,prettyfaces,Prettyfaces,我尝试使用p:fileUpload,但没有调用fileUploadListener方法,也没有生成任何异常。如果没有漂亮的脸,文件上传工作正常 经过一些研究,我发现rewritefaq()可以回答“为什么文件上传不再正常工作?”这个问题,但只能在Tomcat上测试。我在玻璃鱼身上试过,但没有成功 然后我在OcpSoft论坛上找到了一个帖子,它解决了我的问题:。只需将文件上载代码放在其他页面源代码中,并使用HTMLIFRAME标记引用它 好的,问题解决了,但我对iframe解决方案不满意,而fil

我尝试使用p:fileUpload,但没有调用fileUploadListener方法,也没有生成任何异常。如果没有漂亮的脸,文件上传工作正常

经过一些研究,我发现rewritefaq()可以回答“为什么文件上传不再正常工作?”这个问题,但只能在Tomcat上测试。我在玻璃鱼身上试过,但没有成功

然后我在OcpSoft论坛上找到了一个帖子,它解决了我的问题:。只需将文件上载代码放在其他页面源代码中,并使用HTMLIFRAME标记引用它

好的,问题解决了,但我对iframe解决方案不满意,而fileUploadListener方法应该在没有解决方法的情况下调用。那么,有人知道如何配置文件上传与PrettyFaces一起工作的方式吗

Maven依赖项:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>4.0</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2.1</version>
</dependency>

<dependency>
    <groupId>com.ocpsoft</groupId>
    <artifactId>prettyfaces-jsf2</artifactId>
    <version>3.3.3</version>
</dependency>
和web.xml:

<welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

<context-param>
    <param-name>com.ocpsoft.pretty.BASE_PACKAGES</param-name>
    <param-value>
        <!-- Packages with @URLMapping annotation from PrettyFaces -->
        br.nti.ufms
    </param-value>
</context-param>
<context-param>
    <param-name>com.ocpsoft.pretty.DEVELOPMENT</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>commons</param-value>
</context-param>

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

index.xhtml
com.ocpsoft.pretty.BASE\u软件包
br.nti.ufms
com.ocpsoft.pretty.DEVELOPMENT
真的
primefaces.UPLOADER
平民
PrimeFaces文件上载筛选器
org.primefaces.webapp.filter.FileUploadFilter
PrimeFaces文件上载筛选器
Facesservlet
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.xhtml

这可能是一个过滤器链问题。尝试在注册表筛选器上添加以下内容:

<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
转发
要求

查看更多信息。

在Tomcat 7.0.41上,Primefaces 5.0和Prettyfaces Rewrite 2.0.12-final对我也不起作用

但是在我从我的
web.xml

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>
        org.primefaces.webapp.filter.FileUploadFilter
    </filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>51200000</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>/uploadedFilesDirectoryForGlassfish</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
p:fileUpload
也可以从重写的URL开始正常工作

可能有用

另见:


但请稍候,


刚刚观察到它只适用于小文件上传,而对于大文件上传,仍然没有触发fileUpload listener。有人有解决方案吗?

对于文件大小超过2-3 MB的文件上传是否有效?
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>
        org.primefaces.webapp.filter.FileUploadFilter
    </filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>51200000</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>/uploadedFilesDirectoryForGlassfish</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<Context allowCasualMultipartParsing="true">