2013-02-20 59 views
2

我正在使用PrimeFaces <p:fileUpload>。它不調用偵聽器方法。如果我添加FileUploadFilter,那麼我會得到一個異常。PrimeFaces uploadFile不起作用

查看:

<h:form enctype="multipart/form-data"> 
    <p:fileUpload mode="advanced" 
     fileUploadListener="#{fileUploadController.upload()}" 
     allowTypes="/(\.|\/)(gif|jpg|jpeg|gif|png|PNG|GIF|JPG|JPEG)$/" 
     auto="false" /> 
</h:form> 

豆:

public class fileUploadController { 

    private String destination = "c:\test"; 

    public void upload(FileUploadEvent event) { 
     FacesMessage msg = new FacesMessage("Success! ", event.getFile() 
       .getFileName() + " is uploaded."); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
     // Do what you want with the file 
     try { 
      copyFile(event.getFile().getFileName(), event.getFile() 
        .getInputstream()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    public void copyFile(String fileName, InputStream in) { 
     try { 

      // write the inputStream to a FileOutputStream 
      OutputStream out = new FileOutputStream(new File(destination 
        + fileName)); 

      int read = 0; 
      byte[] bytes = new byte[1024]; 

      while ((read = in.read(bytes)) != -1) { 
       out.write(bytes, 0, read); 
      } 

      in.close(); 
      out.flush(); 
      out.close(); 

      System.out.println("New file created!"); 
     } catch (IOException e) { 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

的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> 
+0

簽出本教程:http://www.java-tutorial.ch/java-server-faces/file-upload -with-primefaces – Ioan 2013-02-20 09:13:45

+0

你會得到什麼例外? 「Faces Servlet」是您的jsf servlet的名稱嗎?否則必須調整以下行: <濾波器映射> PrimeFaces文件上傳過濾 面臨的Servlet 成 <濾波器映射> PrimeFaces文件上傳過濾 你的servlet名稱該處 mooonli 2013-02-20 09:20:34

+0

面孔Servlet是不是名字對於我的jsf servlet, – PyaePhyoAung 2013-02-20 10:12:48

回答

0

fileUploadListener="#{fileUploadController.upload()}"是問題就在這裏。我再現了這一點,我也有一個例外方法沒有找到:

你應該定義fileUploadListener沒有括號。當你添加括號時,bean中預期的方法是上傳()而不是上載(FileUploadEvent事件)