问题描述
我正在使用带有Primefaces的JSF 2.2框架,但是无法创建多个文件导入。我尝试使用很多选项,但是它不起作用
公共静态集合getAllParts(Part part)抛出ServletException,IOException {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
return request.getParts().stream().filter(p -> part.getName().equals(p.getName())).collect(Collectors.toList());
}
公共无效的commit()引发ServletException,IOException {
for (Part part : getAllParts(file)) {
String fileName = part.getSubmittedFileName();
InputStream fileContent = part.getInputStream();
// ...
//
// E.g. https://stackoverflow.com/q/14211843/157882
}
}
但是它仍然不起作用。而且HttpServletRequest请求返回空值。请帮助我解决这个问题
解决方法
使用jsf和Primefaces代替servlet请求。
例如
在您的web.xml中
<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>
在您的pom中
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
在您的.xhtml中:
<h:form id="uploadingForm" enctype="multipart/form-data">
<p:fileUpload listener="#{yourbean.handleFileUpload}"
mode="advanced" dragDropSupport="false"
multiple="true" update="messages" sizeLimit="100000" fileLimit="3" />
</h:form>
在您的bean中:
private List<UploadedFile> uploadedFiles;
public void handleFileUpload(FileUploadEvent event) {
uploadedFiles.add(event.getFile());
}
现在您可以处理上载文件列表中的文件了吗?