相关疑难解决方法(0)

如何使用Wicket的DownloadLink与动态生成的文件?

DownloadLink 使用以下行创建用于下载文件的按钮/链接非常方便:

add(new DownloadLink("downloadButton", getReportFile(), "report.pdf"));
Run Code Online (Sandbox Code Playgroud)

<input type="button" wicket:id="downloadButton" value="Download" />
Run Code Online (Sandbox Code Playgroud)

但是,我想仅在单击按钮/链接时触发生成文件才能下载.换句话说,点击后,我会调用一个生成文件的方法(在我们的例子中是Pentaho报告),将它放在临时位置并返回File指向它的方法.然后我告诉DownloadLink使用它File.问题是,这可能以某种方式吗?

目前我们有类似下面的代码,它可以工作,但我对是否DownloadLink可以使用它感兴趣.

add(new Link<Void>("downloadButton") {
  @Override
  public void onClick() {
    IResourceStream resourceStream = new AbstractResourceStreamWriter() {
      @Override 
      public void write(OutputStream output) {
        try {
          reportService.generateReport(output, report);
        } catch (IOException e) {
          // ...
        }
      }

      @Override
      public String getContentType() {                        
        return CONTENT_TYPE_PDF;
      }
    };

    getRequestCycle()
      .setRequestTarget(new ResourceStreamRequestTarget(resourceStream)
      .setFileName("report.pdf"));
  }
});
Run Code Online (Sandbox Code Playgroud)

(Wicket 1.4.18,如果它有所作为.)

java wicket download

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

download ×1

java ×1

wicket ×1