2016-09-02 18 views
0

commandButtonをクリックするとUploadedFileがnullになります。どうしましたか? ENCTYPE = "マルチパート/フォームデータ"UploadedFileがnullの場合Primefaces

<h:form enctype="multipart/form-data"> 
    <p:fileUpload mode="simple" value="#{b_cargar_tbl.file}" /> 
     <p:commandButton actionListener="#{b_cargar_tbl.upload()}" value="Send" ajax="false" /> 
</h:form> 

ビーンのコードである:

private UploadedFile file; 

public UploadedFile getFile() { 
    return file; 
} 

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

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

web.xlm

<context-param> 
    <param-name>primefaces.UPLOADER</param-name> 
    <param-value>auto|native|commons</param-value> 
</context-param> 
<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

iはコード挿入フォームタグで このソリューション: fileUploadListenerp:fileUploadに追加し、1つのパラメータリスナーでマネージドビーンクラスのメソッドで作成しますFileUploadEvent

例:管理対象Bean内

<p:commandButton actionListener="#{b_cargar_tbl.upload()}" value="Send" 
fileUploadListener="#{b_cargar_tbl.upload}" ajax="false" /> 

メソッドを追加します。

public void upload(FileUploadEvent event) { 
     System.err.println("event.getFile().getFileName() = " + event.getFile().getFileName());  
     try { 
      copyFile(event.getFile().getFileName(), event.getFile().getInputstream()); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 

    } 
+0

私は解決策を見つけた:web.xml内の3つの値がありますが、私は "自動" と作業罰金を設定し: <コンテキスト-param>の ​​primefaces.UPLOADER オート|ネイティブ|コモン の –

関連する問題