PrimeFaces 7.0 文件上传文件为空

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

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

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

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

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

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

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

我的设置:

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

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

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

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

我认为当您从 bean 访问文件对象时,您会得到一个空指针。带有

@ManageBean
注释的托管 bean 类的注释将带有
name
属性,而不是值,当使用
value
注释管理另一个 bean 时,会使用
@ManagedProperty

@ManageBean(name="importBean") @RequestScope public class ImportFileBean { private UploadedFile file; public UploadedFile getFile() { return file; } public void setFile(UploadedFile file) { this.file = file; } }
Servlet-name 应与 JSF servlet 的配置名称匹配,在本例中为“Faces Servlet”。检查 servlet-name 的定义是否与过滤器映射相同:

<servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </servlet>
    
© www.soinside.com 2019 - 2024. All rights reserved.