1

我们正在开发一个JSF spring webflow web 应用程序,我们正在尝试使用primefaces 文件上传小部件。primefaces 工作正常,小部件得到正确渲染。但是文件上传不起作用。永远不会调用 backingbean FileUploadController 中的 handlefileupload 函数。其他 primefaces 组件,例如按钮可以调用该 bean 中的函数,因此它可以正确初始化。您可以在下面找到我们的配置。目前我们正在eclipse中开发并使用maven部署Web应用程序,并直接在eclipse中使用jetty服务器运行该应用程序。在 tomcat 上部署 .war 也不起作用。

问题:

  • 选择文件并单击上传后,小部件会给出错误“IO 错误”或“HTTP 错误”
  • 一些数据被传输到服务器(我们嗅探了网络流量)
  • 永远不会调用 backingbean FileUploadController 中的 handlefileupload() 函数

依赖项

  • org.primefaces 2.2.RC2
  • org.springframework.webflow, webflow 和 faces 2.2.1.RELEASE
  • 公共文件上传 1.2.2
  • commons-io 2.0
  • com.sun.faces、api 和 impl 2.0.3
  • org.springframework.security

web.xml

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

开始.xhtml

      <h:form id="mainForm" enctype="multipart/form-data" prependid="false" > 
       <p:fileUpload id="fileUp" fileUploadListener="#fileUploadController.handleFileUpload}"   
    description="Images" /></h:form> 

文件上传控制器.java

 public void handleFileUpload(FileUploadEvent event) {  
  System.out.println("FileUpload Test");

     FacesMessage msg = new FacesMessage("ok", event.getFile().getFileName() + " is uploaded.");  
     FacesContext.getCurrentInstance().addMessage(null, msg);  
 }

bean-config.xml

<bean id="fileUploadController" class="de.hsrm.mi.media.FileUploadController" scope="session"></bean>

提前致谢。我们希望有人可以帮助我们:)

4

2 回答 2

2

改用这个过滤器

<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>Spring MVC Dispatcher Servlet</servlet-name>
</filter-mapping>
于 2011-09-12T06:13:54.547 回答
0

有错误,或者您从您的 xhtml 文件中复制错误

<h:form id="mainForm" enctype="multipart/form-data" prependid="false" > 
       <p:fileUpload id="fileUp" fileUploadListener="#fileUploadController.handleFileUpload}"   
    description="Images" /></h:form>

在“fileUploadController.handleFileUpload}”之前缺少“{”应该是:

<h:form id="mainForm" enctype="multipart/form-data" prependid="false" > 
       <p:fileUpload id="fileUp" fileUploadListener="#{fileUploadController.handleFileUpload}"   
    description="Images" /></h:form>
于 2010-12-15T21:41:49.523 回答