2013-05-03 54 views
2

我有一個primefaces文件上傳器的問題,當上傳完成fileUploadListener中的處理器方法沒有調用時,我在方法啓動中放置了一個斷點並且執行正常進行因爲它是不存在的,沒有例外發生:Primefaces文件上傳器不會調用處理器方法

這是我的文件上傳:

    <h:form enctype="multipart/form-data"> 
        <p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}" 
         mode="advanced" update="messages" sizeLimit="100000" 
         allowTypes="/(\.|\/)(gif|jpe?g|png)$/" 
         <h:message style="color:red;margin:8px;"/> 
         <p:growl id="messages" showDetail="true" /> 
        </h:form> 

,這是處理程序:

@ManagedBean(name="fileUploadController") 
@SessionScoped 
public class FileUploadController { 

public void handleFileUpload(FileUploadEvent event) { 
    FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded."); 
    FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 
} 

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_3_0.xsd" 
id="WebApp_ID" version="3.0"> 
<display-name>Ga</display-name> 
<welcome-file-list> 
    <welcome-file>pages/HomePage.jsf</welcome-file> 
</welcome-file-list> 
<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> 

<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>*.jsf</url-pattern> 
</servlet-mapping> 
<context-param> 
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
</context-param> 
<context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
    <param-value>resources.application</param-value> 
</context-param> 
<listener> 
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
</listener> 

+0

你的組件封裝在''? – skuntsel 2013-05-03 19:46:08

+0

是的,它是封閉的 – 2013-05-03 19:53:48

+0

是否依賴導入(第2.2章)和過濾器設置(第3.37)?參考章節來自[Primefaces 3.5用戶指南](http://primefaces.googlecode.com/files/primefaces_users_guide_3_5.pdf)。 – skuntsel 2013-05-03 20:04:52

回答

2

你應該以下過濾器添加到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> 

EDIT1:

而且this question可以是有益的; )

EDIT2:

親愛的朋友,請消除在web.xml的過濾器映射之一,它的複製。

+0

我已經添加了它 – 2013-05-03 21:36:07

+0

請問您可否向我提供web.xml? – 2013-05-03 21:42:57

+0

好的,請參閱編輯 – 2013-05-03 22:12:34

相關問題