2011-09-13 10 views
1

私のアプリケーションでは、Apache Tomcat 6で動作していますが、私はPrimeFaces 3.0.M3からfileUploadを使用しています。しかし、正しく動作しません。ファイルをアップロードするとアップロードディレクトリに表示されますが、イベントは発生しません。誰かが私を助けることができますか?PrimeFaces fileUploadイベントは起動しません

マイビューコード:

<h:form prependId="false" id="uploadForm" enctype="multipart/form-data"> 
    <p:fileUpload id="uploadControl" fileUploadListener="#{fileUploadBean.uploadHandler}" mode="advanced" /> 
</h:form> 

FileUploadBeanクラスのソース:

@ManagedBean 
@RequestScoped 
public class FileUploadBean implements Serializable { 

    private static final Logger logger = Logger.getLogger(FileUploadBean.class); 

    private UploadedFile file; 

    public void uploadHandler(FileUploadEvent event) throws AbortProcessingException { 
     logger.debug("uploadHandler(FileUploadEvent event)"); 
     logger.debug("Uploaded file: " + event.getFile().getFileName()); 
    } 

    public UploadedFile getFile() { 
     return file; 
    } 

    public void setFile(UploadedFile file) { 
     this.file = file; 
    } 
} 

私のweb.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.SKIP_COMMENTS</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>primefaces.THEME</param-name> 
     <param-value>casablanca</param-value> 
    </context-param> 
    <filter> 
     <filter-name>PrimeFaces FileUpload Filter</filter-name> 
     <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
     <init-param> 
      <param-name>uploadDirectory</param-name> 
      <param-value>/tmp</param-value> 
     </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>PrimeFaces FileUpload Filter</filter-name> 
     <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping> 
    <filter-mapping> 
     <filter-name>PrimeFaces FileUpload Filter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <servlet> 
     <servlet-name>Resource Servlet</servlet-name> 
     <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Resource Servlet</servlet-name> 
     <url-pattern>/primefaces_resource/*</url-pattern> 
    </servlet-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>*.jsf</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsf</welcome-file> 
    </welcome-file-list> 
    <login-config> 
     <auth-method>BASIC</auth-method> 
    </login-config> 

    <servlet> 
     <servlet-name>StartupServlet</servlet-name> 
     <servlet-class>com.greytower.servlets.StartupServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <listener> 
     <listener-class>com.project.servlets.ContextListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>LoginServlet</servlet-name> 
     <servlet-class>com.project.servlets.LoginServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>LoginServlet</servlet-name> 
     <url-pattern>/login</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>AjaxServlet</servlet-name> 
     <servlet-class>com.project.servlets.AjaxServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>AjaxServlet</servlet-name> 
     <url-pattern>/ajax</url-pattern> 
    </servlet-mapping> 
    <servlet> 
     <servlet-name>DownloadServlet</servlet-name> 
     <servlet-class>com.project.servlets.DownloadServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>DownloadServlet</servlet-name> 
     <url-pattern>/get</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>ImageServlet</servlet-name> 
     <servlet-class>com.project.servlets.ImageServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>ImageServlet</servlet-name> 
     <url-pattern>/image</url-pattern> 
    </servlet-mapping> 
</web-app> 

答えて

3

私はあなたが持っている、あなたの問題はあなたのweb.xml構成であると思いますファイルアップロードフィルタに対して2つの異なるフィルタマッピングが宣言されていますが、そのうちの1つが間違っています:

<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

代わりに、あなたはこれを必要とする:

<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 

あなただけFacesサーブレットへのファイルアップロードフィルタをマップします。

+0

ありがとうございます、私の問題を解決します。 –

関連する問題