use*_*539 9 jsf file-upload primefaces jsf-2
我正面临着<p:fileUpload>PrimeFaces 的问题.我创建了一个Facelet页面来上传文件,如下所示:
<h:form id="welcomeForm">
<p:fileUpload value="#{fileUploadController.uploadedFile}" mode="simple" />
<h:commandButton value="Submit" action="#{fileUploadController.submit}" />
<h:message for="welcomeForm" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
和一个支持bean如下:
public class FileUploadController {
private UploadedFile uploadedFile;
public FileUploadController() {
}
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
public void submit() {
// Get information you from the uploaded file
System.out.println("Uploaded file name : " + uploadedFile);
}
}
Run Code Online (Sandbox Code Playgroud)
当我单击Submit按钮时,submit()会调用该方法,但结果如下:
信息:上传的文件名:null
这是怎么造成的,我该如何解决?
Bal*_*usC 13
请阅读PrimeFaces用户指南的<p:fileUpload>章节.
FileUpload入门
首先要做的是配置解析multipart请求的fileupload过滤器.FileUpload过滤器应映射到Faces Servlet.
Run Code Online (Sandbox Code Playgroud)<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实例.Run Code Online (Sandbox Code Playgroud)<h:form enctype="multipart/form-data"> <p:fileUpload value="#{fileBean.file}" mode="simple" /> <p:commandButton value="Submit" ajax="false"/> </h:form>
Run Code Online (Sandbox Code Playgroud)import org.primefaces.model.UploadedFile; public class FileBean { private UploadedFile file; //getter-setter }
请注意enctype="multipart/form-data"表单的属性.这对于HTML是必需的,以便能够将文件发送到服务器.对于JSF,过滤器是必需的,以便从multipart/form-data请求中提取数据.如果没有其中任何一个,则不会调用命令操作,也不会调用所有属性null.
Ben*_*Ben 11
我认为问题在于简单上传不支持ajax.你应该补充ajax="false":
<h:form id="welcomeForm">
<p:fileUpload value="#{fileUploadController.uploadedFile}" mode="simple" />
<h:commandButton value="Submit" action="#{fileUploadController.submit}" ajax="false" />
<h:message for="welcomeForm" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
或者使用primefaces autouploader.
| 归档时间: |
|
| 查看次数: |
28305 次 |
| 最近记录: |