使用Primefaces 3.5文件上传时出错

佛教阿里亚拉特尼(Buddhika Ariyaratne)

在带有PrimeFaces 3.3的项目中,文件上传正常运行。我删除了Primefaces 3.3,并添加了3.5。从那时起,我无法进行文件上传。早些时候,我添加了commons-io和commons.fileupload,但我不确定它们是否仍然需要,因此我也保留了这些jar文件。

错误

java.lang.NullPointerException
    at org.primefaces.component.fileupload.FileUploadRenderer.decodeSimple(FileUploadRenderer.java:56)
    at org.primefaces.component.fileupload.FileUploadRenderer.decode(FileUploadRenderer.java:47)
    at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:836)
    at javax.faces.component.UIInput.decode(UIInput.java:771)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1228)
    at javax.faces.component.UIInput.processDecodes(UIInput.java:676)
    at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1223)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1223)
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929)
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:724)

菜豆

public void handleFileUpload1(FileUploadEvent event) { 
    System.out.println("uploading");
    FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");  
    FacesContext.getCurrentInstance().addMessage(null, msg);  
    System.out.println("uploaf finished");
} 

JSF页面

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
        <h:outputStylesheet library="css" name="maincss.css" />
    </h:head>
    <h:body>

        <h:form enctype="multipart/form-data">
            <p:fileUpload  fileUploadListener="#{staffController.handleFileUpload1}" mode="simple" value="#{staffController.file}"
                           allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />  
            <p:commandButton ajax="false" value="Submit" />

        </h:form>


    </h:body>
</html>

web.xml文件

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>
        org.primefaces.webapp.filter.FileUploadFilter
    </filter-class>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value></param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping> 
Suryaprakash Pisay

当版本从3.3更改为3.5时,我也遇到了同样的问题

但最终得到下面给出的第二个解决方案

第一种解决方案

primefaces高级文件上传中存在一些问题

我认为mode="simple"p:fileUpload标签中的问题

制作mode="advanced"并测试一次。

如果有效,然后

问题是您正在给mode =“ simple”并尝试以高级方式进行处理。

第二个解决方案使您的文件上传如下所示,以一种简单的方式进行处理

<p:fileUpload value="#{staffController.file}" mode="simple"/>  

    <p:commandButton value="Submit" ajax="false" actionListener="#{staffController.upload}"/>  

并在您的Backing Bean / Controller / staffController中

创建一个属性

    private UploadedFile file;

//getter setters

并放置如下所示上传方法

public void upload() {
        System.out.println("uploading");
        if(file != null) {  
            FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");  
            FacesContext.getCurrentInstance().addMessage(null, msg);  
        }
        System.out.println("uploaf finished");
    }  

希望能帮助到你

资料来源

您好,抱歉,回复晚了。

请检查您是否在web.xml中为Servlet添加了文件上传过滤器。

1)

<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><!-- your FacesServlet Name -->
</filter-mapping>

2)

在lib文件夹中添加commons-fileupload1.3.jar文件。

3)

确保您的表单是否具有enctype属性

<h:form enctype="multipart/form-data">   <!-- enctype tag is important -->

请检查以上3点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用xcopy命令时“复制了无效的路径0文件”时出错

来自分类Dev

在python脚本中使用utf-8文件名时出错

来自分类Dev

使用ffmpeg解码mp3文件时缺少标题

来自分类Dev

使用反向代理请求.m3u8文件时添加CORS标头

来自分类Dev

Swift / Objective S3文件上传

来自分类Dev

使用Spark读取S3文件时获取NullPointerException

来自分类Dev

HTML5文件API使用Ajax上传多个图像

来自分类Dev

使用cron作业执行python3文件。

来自分类Dev

使用Rails App下载S3文件

来自分类Dev

Java:尝试播放mp3文件时出错

来自分类Dev

错误:使用mp3文件时,文件名必须以.xml或.png结尾

来自分类Dev

Nodejs Amazon S3文件上传

来自分类Dev

使用Boto下载S3文件

来自分类Dev

使用django s3文件存储时将所有文件设为私有

来自分类Dev

Symfony 3文件上传

来自分类Dev

使用putObject时S3文件已损坏

来自分类Dev

在Python中将Notation3文件序列化为RDFXML格式时出错

来自分类Dev

使用ffmpeg解码mp3文件时缺少标题

来自分类Dev

使用Guzzle PHP将s3文件用于多部分/表单数据上传

来自分类Dev

如何使用ffmpeg修剪mp3文件?

来自分类Dev

使用python上传s3文件时出错

来自分类Dev

Seahorse :: Client :: NetworkingError使用Rails上传Amazon S3文件

来自分类Dev

使用Rails App下载S3文件

来自分类Dev

如何使用ASP.NET MVC 5和实体框架下载MP3文件

来自分类Dev

使用`say`前缀mp3文件的标题

来自分类Dev

使用Play-S3上传的S3文件无法显示图片,但可以显示文本文件

来自分类Dev

使用Rails上传/播放mp3文件

来自分类Dev

使用 JSF 和 Primefaces 下载文件时出错

来自分类Dev

使用文件输入上传文件时出错

Related 相关文章

热门标签

归档