在Wicket 1.4,我有一個自定義的AbstractResourceStreamWriter(在一個自定義的鏈接類型用於流是被實時生成的文件):如何處理Wicket 1.5中的IResourceStreamWriter API更改?
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。這是有點令人困惑的是,IResourceStreamWriter的javadoc仍在談論的OutputStream:
特別IResourceStream實現,當 直接要寫入輸出流的資源可以返回,而不是返回 IResourceStream.getInputStream()
...
實施此方法直接寫入給定OutputStream的資源數據 。
無論如何,我沒有看到從Response獲取OutputStream的快速方法。
鑑於我有一個方法(上面的代碼中調用generateReport(output, report)
),它需要一個OutputStream寫入,最簡單的方法是什麼使這個工作再次?
謝謝,我想這可以工作。 (現在無法驗證,因爲還有其他1.5遷移問題未解決。)順便說一下,該變量需要定義爲ByteArrayOutputStream;我冒昧地編輯你的答案。 – Jonik 2011-12-29 13:32:34
謝謝......我在之前的編輯中刪除了它,但不涉及IDE。我現在也無法測試它,因爲我無法從工作中訪問我的Wicket項目... – Nicktar 2011-12-29 13:35:23