2012-11-14 36 views
0

我想用Primefaces文件上傳,這是我的JSF頁面:Primefaces - 如何設置文件上傳

<h:form id="uploadForm" enctype="multipart/form"> 

    <p:fileUpload id="fileUpload" value="#{fileUploadController.file}" mode="simple"/> 

    <p:commandButton value="Submit" ajax="false" 
           actionListener="#{fileUploadController.upload}" />    
</h:form> 

這是我的豆:

package FileUploadController; 


import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.context.FacesContext; 
import org.primefaces.model.UploadedFile; 

@ManagedBean 
@SessionScoped 
public class FileUploadController { 

    private UploadedFile file; 

    public UploadedFile getFile() { 
     return file; 
    } 

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

    public void upload() { 
     if(file != null) { 
      FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded."); 
      FacesContext.getCurrentInstance().addMessage(null, msg); 
     } 
    } 
} 

這裏是必需的依存關係拘謹。文件上傳,pom.xml中(我使用maven項目):

<dependency> 
    <groupId>commons-fileupload</groupId> 
    <artifactId>commons-fileupload</artifactId> 
    <version>1.2.1</version> 
</dependency>  
<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>1.3.2</version> 
</dependency> 
<dependency> 
    <groupId>portlet-api</groupId> 
    <artifactId>portlet-api</artifactId> 
    <version>1.0</version> 
</dependency> 

這裏是我的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> 

我想設置UploadedFile文件。當我點擊提交按鈕時,上傳方法調用正確,但UploadedFile文件仍爲空,未設置爲選定文件。我怎樣才能設置這個文件?

回答

1

enctype屬性enctype="multipart/form"無效。 enctype屬性指定用於將表單提交給服務器的內容類型。

按照PrimeFaces文檔(183頁)enctype屬性應定義爲enctype="multipart/form-data",你的情況:

<h:form id="uploadForm" enctype="multipart/form-data"> 
    ... 
</h:form> 
+0

是的,它的工作現在。非常感謝你! – brano

+0

@brano歡迎您!如果它幫助你解決你的問題,請將此帖標記爲答案(通過點擊左側的複選標記)。請參閱[如何接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)? - akoskm –