WebResponse.getOutputStream () в калитке 1.5? - PullRequest
3 голосов
/ 17 ноября 2011

Этот код работал для меня в 1.4:

WebResponse response = (org.apache.wicket.request.http.WebResponse) getResponse();
response.setAttachmentHeader("List.xls");
response.setContentType("application/ms-excel");
OutputStream out = response.getOutputStream();
WritableWorkbook workbook = Workbook.createWorkbook(out);
.....
.....
workbook.write();
workbook.close();

Я вижу, что в 1.5 нет WebResponse.getOutputStream () - но он не был помечен как устаревший?

Я посмотрел руководство по миграции 1.5, но не вижу очевидного решения.

Может кто-нибудь, пожалуйста, скажите мне, как я должен делать это в 1.5.

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Вы можете обернуть Response в OutputStream:

public final class ResponseOutputStream extends OutputStream {
    private final Response response;
    private final byte[] singleByteBuffer = new byte[1];
    public ResponseOutputStream(Response response) {
        this.response = response;
    }
    @Override
    public void write(int b) throws IOException {
        singleByteBuffer[0] = (byte) b;
        write(singleByteBuffer);
    }
    @Override
    public void write(byte[] b) throws IOException {
        response.write(b);
    }
    @Override
    public void write(byte[] b, int off, int len) throws IOException {
        if (off == 0 && len == b.length) {
            this.write(b);
        } else {
            super.write(b, off, len);
        }
    }
}
1 голос
/ 17 ноября 2011

Это было исправлено вчера. Будет частью калитки 1.5.4. Но для этого варианта использования вы должны использовать ресурс. Смотрите реализацию ResourceLink.

...