Primeface 7.0 文件上传文件为空

问题描述 投票:0回答:1

嘿,我被这个问题困扰了很长时间,找不到解决方案。 现在,假期结束后,问题仍然在等着我,我不知道该做什么,也没有动力。在多次询问并向他们展示我所做的事情后,我没有得到团队的帮助。

我的目标是将文件从 xhtml 类上传到 Bean Faclet。(@ManagedBean) 我使用的:Primeface Basic Upload Simple/Advanced(来自展示柜)

问题:掩码显示正确,我可以选择文件,它将显示在字段中。 当我想上传它时,我收到错误,Bean 中的文件值为空。

错误:java.lang.NullpointerException。无法调用“org.primefaces model.UploadFile.getFileName()”,因为 xxx.getFile()”的返回值为 null

请求在德语“Nutzlast”选项卡中似乎没问题,我可以看到文件名。

我知道有一个查看其他帖子也有同样的问题,我已经尝试过他们的解决方案,但对我来说没有成功。

我的设置:

  • Primeface 7.0
  • 春季启动
  • 雄猫9.0.38

我尝试了不同的解决方法:

  • 我在这里用谷歌搜索,但没有一个解决方案能进一步帮助我
    • 上下文、过滤器、依赖关系
  • 我一步一步地做到了,还尝试了 inputText 只是为了确保向 Bean 提供了某些内容并且它可以工作。
  • 我尝试了简单和高级模式
  • 当然是一步一步调试,但是当我尝试读取文件时,控制台中没有错误,旁边是空。
  • 我尝试了不同的primeface版本
  • 我在 web.xml 和过滤器中添加了配置
<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);
}

java spring-boot tomcat primefaces
1个回答
0
投票

我认为当您从 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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.