DownloadLink
удобен и удобен для создания кнопки / ссылки для загрузки файла, например:
add(new DownloadLink("downloadButton", getReportFile(), "report.pdf"));
и
<input type="button" wicket:id="downloadButton" value="Download" />
Тем не менее, я бы хотел инициировать генерацию файла для загрузки только при нажатии кнопки / ссылки .Другими словами, при щелчке я бы вызвал метод, который генерирует файл (в нашем случае отчет 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"));
}
});
(Калитка 1.4.18, если онаимеет значение.)