DownloadLink
хорош и удобен для создания кнопки / ссылки для загрузки файла в следующих строках:
add(new DownloadLink("downloadButton", getReportFile(), "report.pdf"));
и
Однако я хотел бы ] запускает создание файла для загрузки только при нажатии кнопки / ссылки . Другими словами, при нажатии я вызываю метод, который генерирует файл (в нашем случае отчет Pentaho), помещает его в временное место и возвращает файл
, указывающий на него. Затем я бы сказал DownloadLink
использовать этот файл
. Вопрос в том, это возможно каким-то образом ?
В настоящее время у нас есть что-то вроде приведенного ниже кода, который работает, но меня интересует, можно ли вместо него использовать DownloadLink
.
add(new Link("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"));
}
});
(Wicket 1.4.18, если он имеет значение.)