PrimeFaces 11 fileupload



我只是试图运行简单的文件上传与primefaces 11。我的身体是:

<h:body>
<h:form enctype="multipart/form-data">
<p:fileUpload value="#{fileUploadBean.uploadedFile}" mode="simple" skinSimple="true"/>
<p:commandButton value="Submit" ajax="false" action="#{fileUploadBean.upload}" styleClass="p-mt-3 ui-button-outlined p-d-block"/>
</h:form>
</h:body>

My bean is

@Component
public class FileUploadBean {
private UploadedFile uploadedFile;
private UploadedFiles files;
public void upload() {
String fileName = uploadedFile.getFileName();
String contentType = uploadedFile.getContentType();
byte[] contents = uploadedFile.getContent(); // Or getInputStream()
}
public void uploadMultiple() {
System.err.println("uploadMultiple");
if (files != null) {
for (UploadedFile f : files.getFiles()) {
FacesMessage message = new FacesMessage("Successful", f.getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
}
public void handleFileUpload(FileUploadEvent event) {
UploadedFile uploadedFile = event.getFile();
System.err.println(uploadedFile.getFileName());
FacesMessage message =
new FacesMessage("Successful", event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
}
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
public UploadedFiles getFiles() {
return files;
}
public void setFiles(UploadedFiles files) {
this.files = files;
}
}

我将这些添加到web.xml

<context-param>
<param-name>primefaces.UPLOADER</param-name>
<param-value>auto</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>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map these files with JSF -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

问题是"upload"功能未触发。如果我删除enctype="multipart/form-data"一部分;upload"函数触发,但uploadedFile字段为空。

我也尝试了所有的例子在primefaces演示页面,没有工作。

有人知道吗?我找不到任何使用主面的答案。

感谢

@Component是来自Spring上下文的注释。如果你尝试使用Spring框架与JSF和PrimeFaces,我建议你使用Joinfaces。下面是一个使用文件上传的工作示例。

最新更新