【问题标题】:FileServlet + call bean functionFileServlet + 调用 bean 函数
【发布时间】:2012-03-29 03:29:38
【问题描述】:

我正在使用 BalusC 的 FileServlet 示例:

http://balusc.blogspot.com/2007/07/fileservlet.html

我能够让它工作,但是,我想在下载发生之前调用一个 bean 函数。有没有办法让它工作?我尝试了 a4j:support 并且我也尝试了 h:commandLink 但都没有成功。任何帮助表示赞赏!

【问题讨论】:

    标签: java richfaces jsf-1.2


    【解决方案1】:

    您可以改为在 bean 的操作方法中执行文件下载工作。对于一些具体示例,请参阅此答案:How to provide a file download from a JSF backing bean?

    您只需要确保请求不是由 Ajax 发出的,因为负责处理 Ajax 请求的 JavaScript 语言没有任何工具来强制另存为出于安全原因的对话。因此,请为此使用普通的 <h:commandLink><h:commandButton>

    【讨论】:

    • 但似乎这是使用 tr:fileDownloadActionListener,有没有办法使用上述 servlet 并调用 bean 函数?
    • 没关系。只需使用<h:commandLink>。至于使用 servlet,有很多方法,但它不必要地过于复杂,因为您基本上需要单击发送 2 个 HTTP 请求,其中一个由 JavaScript 执行。
    • 您好,我尝试按照 trinidad 网站上的文档进行操作,但加载 jar 文件时出错:SEVERE: Error Loading Library: jar:file:/Users/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/project/WEB-INF/lib/trinidad-impl-2.0.1.jar!/META-INF/tr.taglib.xml 有没有关于此的综合示例?
    • 我认为您完全误解了链接的问题/答案。 OP 只是询问如何使用纯 JSF 实现与特立尼达的文件下载组件相同的功能。我在那里的回答表明了这一点。您不需要安装 Trinidad 或其他东西。只需按照我的答案编写支持 bean 代码并调用该表单 <h:commandLink>
    • 没关系,我找到了解决问题的替代方案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    相关资源
    最近更新 更多