0

Primefaces fileupload を使用したいのですが、これは私の jsf ページです:

 <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);  
        }  
    }  
}

プリムに必要な依存関係は次のとおりです。fileupload、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ファイルはまだ null であり、選択したファイルに設定されていません。このファイルを設定するにはどうすればよいですか?

4

1 に答える 1

1

enctype属性が無効ですenctype="multipart/form"このenctype属性は、フォームをサーバーに送信するために使用されるコンテンツ タイプを指定します。

PrimeFaces のドキュメント (183 ページ) によると、enctype属性は次のように定義する必要がありenctype="multipart/form-data"ます。

<h:form id="uploadForm" enctype="multipart/form-data">
    ...
</h:form>
于 2012-11-14T22:40:16.107 に答える