В Wicket 1.4 у меня был пользовательский AbstractResourceStreamWriter (используемый в пользовательском виде Link для потоковой передачи файла, который генерируется на лету):
private AbstractResourceStreamWriter resourceStreamWriter() {
return new AbstractResourceStreamWriter() {
@Override
public void write(OutputStream output) {
try {
reportService.generateReport(output, report);
} catch (ReportGenerationException e) {
// ...
}
}
@Override
public String getContentType() {
return CONTENT_TYPES.get(report.getOutputType());
}
};
}
В Wicket 1.5 интерфейс IResourceStreamWriter был изменен, так что метод получает Response вместо OutputStream . Несколько странно, что Javadocs IResourceStreamWriter все еще говорит о OutputStream:
Специальная реализация IResourceStream, которую Ресурс может вернуть, когда
он хочет напрямую записать в выходной поток вместо
IResourceStream.getInputStream ()
...
Реализуйте этот метод для записи данных ресурса непосредственно в
данный OutputStream.
В любом случае, я не вижу быстрого способа получить OutputStream из Ответа.
Учитывая, что у меня есть метод (вызов generateReport(output, report)
в приведенном выше коде), который ожидает записи в OutputStream, какой самый простой способ заставить эту работу снова?