1

我想知道是否有人设法让 Primefaces 的p:fileupload组件在 Websphere Application Server 8 上运行。

我使用 Primefaces 2.2.1 版本。

JSF 代码:

<h:form enctype="multipart/form-data">  
    <p:fileUpload 
            fileUploadListener="#{mailBean.handleFileUpload}"   
            multiple="true" 
            label="choose" 
            allowTypes="*.jpg;*.png;*.gif;" 
            description="Images"/>          
</h:form>

托管 Bean 代码:

public void handleFileUpload(FileUploadEvent event) 
{  
    files.add(event.getFile());
    logger.info("File uploaded into MailBean: " + event.getFile());
    System.out.println("File uploaded into MailBean: " + event.getFile());
} 

Web.xml 过滤器:(Servlet 3.0)

<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>51200</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>c:/temp/pf</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

该组件显示 HTTP 错误并变为红色,在控制台上我得到 Myfaces 的 ViewExpiredException:

Caused by: javax.faces.application.ViewExpiredException: /createmail.xhtml
           No saved view state could be found for the view identifier: /createmail.xhtml
at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:128)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)

我什至尝试使用其他两个版本的 Mojarra 而不是 Myfaces,但出现错误(2.1:处理程序没有被调用,2.0.3:viewexpired)

4

2 回答 2

0

你有 .jars 和 web.xml 配置吗(删除“c:”,默认是那个路由)?我遇到了同样的问题,但后来我重新启动了我的 WAS 8.5 并且它起作用了。

于 2013-10-28T05:13:57.570 回答
0

我将 Websphere 7 与 JSF 2.0 与 Mojarra 2 和 PrimeFaces 3.4.2(common-fileupload-1.2.2.jar 和 common-io-1.3.2.jar)一起使用

我看到 fileUpload 不调用 WebSphere 中的 bean。我看到加载文件但没有到达 managedBean 上的事件的栏。

似乎 Websphere 中的其他一些过滤器捕获了 HTTP 请求,并且您无法获取 fileUpload 发送的数据,因为它们只是被消耗掉了:(

于 2013-11-14T15:46:33.820 回答