嘿,我被这个问题困扰了很长时间,找不到解决方案。 现在,假期结束后,问题仍然在等着我,我不知道该做什么,也没有动力。在多次询问并向他们展示我所做的事情后,我没有得到团队的帮助。
我的目标是将文件从 xhtml 类上传到 Bean Faclet。(@ManagedBean) 我使用的:Primeface Basic Upload Simple/Advanced(来自展示柜)
问题:掩码显示正确,我可以选择文件,它将显示在字段中。 当我想上传它时,我收到错误,Bean 中的文件值为空。
错误:java.lang.NullpointerException。无法调用“org.primefaces model.UploadFile.getFileName()”,因为 xxx.getFile()”的返回值为 null
请求在德语“Nutzlast”选项卡中似乎没问题,我可以看到文件名。
我知道有一个查看其他帖子也有同样的问题,我已经尝试过他们的解决方案,但对我来说没有成功。
我的设置:
我尝试了不同的解决方法:
<context-param>
<param-name>primefaces.UPLOADER</param-name>
<param-value>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>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.1</version>
</dependency>
我的部分代码,我无法全部分享。非常简单
xHtml:
<h:panelGrid columns="4" cellpadding="5" style=margin-left:20px; margin top:30px">
<h:form enctype ="multipart/form-data">
<p:outputLabel value ="File: "/>
<p:fileUpload value ="#{ImportBean.file}" mode ="simple" />
<p:commandButton value="Generien" ajax="false" action="#{ImportBean.createFile()}" />
</h:form>
</h:panelGrid>
豆:
@ManageBean(Value ="ImportBean")
@RequestScope
public class ImportFileBean {
private UploadedFile file;
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
public void createFile(){
String filename = getFile().getFilename();
LOG.info(filename);
}
我认为当您从 bean 访问文件对象时,您会得到一个空指针。托管 bean 类的注释将带有
name
属性,而不是值,在管理另一个托管 bean 中的托管 bean 时使用值。
@ManageBean(name="importBean")
@RequestScope
public class ImportFileBean {
private UploadedFile file;
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
}