PrimeFaces 文件下载不起作用

2023-11-23

我无法获取 primeFaces<p:filedownload工作。虽然我使用自定义下载 bean 成功下载了文件。似乎问题与 primefaces 文件下载 ActionListener 有关,但我不知道如何。有人有线索吗?谢谢。

这是我的豆子:

@ManagedBean(name="fileDownloadBean")
@SessionScoped
public class FileDownloadBean implements Serializable {

    private StreamedContent file;

    public StreamedContent getFile() {
        return file;
    }

    public void setFile(StreamedContent file) {
        this.file = file;
    }

    /** Creates a new instance of FileDownloadBean */
    public FileDownloadBean() {
        InputStream stream = this.getClass().getResourceAsStream("sessionlog.csv");
        file = new DefaultStreamedContent(stream, "application/csv", "sessionlog.csv");

    }
}

这是我的视图代码:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.prime.com.tr/ui" 
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:o="http://openfaces.org/"
                template="./../template.xhtml">

    <ui:define name="title">
        #{bundle.Log}
    </ui:define>

    <ui:define name="body">
        <h:form>
            <p:separator style="height: 10px;margin-bottom: 10px;margin-top: 0px;"/>
            <p:commandButton value="#{bundle.Log}" image="ui-icon ui-icon-link" ajax="false" disabled="false">
                <p:fileDownload value="#{fileDownloadBean.file}" />
            </p:commandButton>
</ui:composition>

我收到 500 错误:NullPointerException :

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException
root cause

java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1 logs.

GlassFish Server Open Source Edition 3.1

LOG:

WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
    at org.primefaces.component.filedownload.FileDownloadActionListener.processAction(FileDownloadActionListener.java:59)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
    at javax.faces.component.UICommand.broadcast(UICommand.java:300)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:662)

InputStream stream = this.getClass().getResourceAsStream("sessionlog.csv");

您找到 CSV 文件的方式期望它位于相同的套餐作为当前班级,FileDownloadBean.

如果它实际上位于包根目录中,那么您应该使用:

InputStream stream = this.getClass().getResourceAsStream("/sessionlog.csv");

或者,例如,如果它实际上位于不同的包中com.example,那么你应该使用:

InputStream stream = this.getClass().getResourceAsStream("/com/example/sessionlog.csv");

或者,如果它实际上位于公共网络内容的根目录中(在那里/WEB-INF文件夹也在所有其他网络文件中),那么您应该使用:

InputStream stream = externalContext.getResourceAsStream("/sessionlog.csv");

(顺便说一句,这也适用于 WAR 类,而不是this.getClass())

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PrimeFaces 文件下载不起作用 的相关文章

随机推荐

  • 如何克隆到非空目录?

    我有目录 A 和与目录 B 匹配的文件 目录 A 可能还有其他需要的文件 目录 B 是一个 git 存储库 我想将目录 B 克隆到目录 A 但 git clone 不允许我这样做 因为该目录非空 我希望它只是克隆 git 并且因为所有文件都
  • 如何使用 python 将 wav 实时转换为 mp3?

    我有如下所示的代码来从麦克风获取音频 import pyaudio p pyaudio PyAudio CHUNK 1024 FORMAT pyaudio paInt16 CHANNELS 2 RATE 1024 10 RECORD SEC
  • 范围最小查询 方法(从树到受限 RMQ)

    所以 我读了thisTopCoder 关于 RMQ 范围最小查询 的教程 我有一个很大的问题 在他介绍的部分方法 到目前为止我能理解的是 整个方法实际上使用了中介绍的方法稀疏表 ST 算法 从 LCA 减少到 RMQ and 从 RMQ 到
  • Win32 中本机 C/C++ 的高级 HTTP 客户端库

    Win32 中是否没有用于本机 C C 的 高级 HTTP 库 或者我只是找错了地方 我所说的 高级 是指一个 API 它允许我使用与 NET 框架 大致相同 的抽象级别在 C 中执行 HTTP Web 请求 响应 但请注意 使用 C CL
  • FontAwesome 图标在反应/下一个应用程序中无法正常工作

    已解决 TLDR 添加import fortawesome fontawesome svg core styles css 到 app js index js 文件修复了该问题 并且 FontAwesome 按预期工作 我的问题是由npx
  • delete[]等于删除吗? [复制]

    这个问题在这里已经有答案了 IP ADAPTER INFO ptr new IP ADAPTER INFO 100 如果我免费使用 delete ptr 会导致内存泄漏吗 如果不会的话为什么 这是VS2005生成的反汇编代码 delete
  • GitHub Actions 的工作流程中是否可以有动态策略矩阵?

    我想在工作流程中动态指定策略矩阵 所以 而不是 strategy matrix foo bar baz 我想首先调用一些脚本来计算并返回一个数组 例如 bar baz 对我来说 然后我想用它作为策略矩阵 这可能吗 使用可用的 GitHub
  • AppCompat v7 工具栏向上/后退箭头不起作用

    我的活动中有两个片段 当片段 A 显示时 我希望显示抽屉式导航汉堡图标并且抽屉式导航能够工作 当片段 B 显示时 我希望显示后退箭头 并在单击它时进行向上导航 但是 除非导航抽屉打开 否则我似乎无法让新的 AppCompat v7 工具栏在
  • 如何在pyCharm中进行单元测试

    我想做一些单元测试 所以我设置了一个列表 其中所有值都应断言为 true 就像这个问题 但我想让它跑进去PyCharm 按Alt Shift F10 如果我只使用答案中的代码 我就会得到No tests were found 您需要仔细检查
  • 如何检测 Java 字符串中的日文文本?

    我需要能够检测 Java 字符串中的日语字符 目前 我正在获取 UnicodeBlock 并检查它是否等于Character UnicodeBlock KATAKANA 或Character UnicodeBlock HALFWIDTH A
  • Android 对话框中的非法参数异常

    我正在使用此代码来显示警报对话框 当我单击 确定 按钮时 它应该显示日期选择器 protected Dialog onCreateDialog int id switch id case TIME DIALOG ID return new
  • 将 byte[] 转换为 float[] 时出现 UnsupportedOperationException

    我试图通过将 byte 放入 ByteBuffer 中 将 byte 转换为 float 将其转换为 FloatBuffer asFloatBuffer 然后将其转换为数组 private static float toFloatArray
  • 如何在 MS SQL Server 上模拟 Oracle 物化视图?

    连接到 MS SQL Server 的应用程序将创建视图 其中单行结果是包括 1 10k 记录聚合的分析 结果视图中的适用标准将有数十到数万个结果 然后 视图 条件将按视图中最有可能是聚合列的某些列 用户指定 进行排序 当使用聚合列进行排序
  • Dart/Flutter :日期范围内的天数列表

    我需要从日期范围中检索天数列表 用户选择开始日期和结束日期 并计算之间的天数 包括开始和结束日期 我尝试使用 for 循环 如下所示 List
  • Sub 与没有返回值的函数

    子程序的意义是什么 Sub 为什么不使用一个Function没有返回值 Edit 我的意思是 为什么关键字Sub存在 我可以用Function没有声明返回值并具有相同的 不是吗 因为它澄清了intent A Function明确地说 我回来
  • 如何在 GO 的 websocket 中保持连接处于活动状态

    I use code google com p go net websocket在服务器中 因此客户端可以从服务器获取通知 但是 客户端连接到服务器后 如果客户端和服务器之间没有任何数据传输 服务器将返回 EOF 错误websocket J
  • 如何将 Net::HTTP 响应转换为 Ruby 1.9.1 中的某种编码?

    我有一个 Sinatra 应用程序 http analyzethis espace technologies com 执行以下操作 检索 HTML 页面 通过 net http 从response body创建Nokogiri文档 提取一些
  • 数组被 array_keys() 和 array_values() 分割后元素顺序是否相同? [复制]

    这个问题在这里已经有答案了 我浏览了两者的手册页数组键 and 数组值 他们都没有提及是否遵守原始数组的元素顺序 他们所承诺的只是返回原始数组中的所有键或值 但是我们能绝对确定元素的顺序也与原始数组的顺序完全相同吗 不管是什么数组 我问这是
  • Flutter 中提供程序的单元测试

    我们已经以 TDD 方法启动了一个关于 Flutter 的新项目 我正在使用提供程序进行状态管理 在尝试编写小部件测试时 我们面临着测试提供程序的问题 您能否建议一个示例来编写提供者的单元测试和小部件注入提供者 我遇到以下问题 EXCEPT
  • PrimeFaces 文件下载不起作用

    我无法获取 primeFaces