最后检查的检票口反应

时间:2014-05-21 10:40:50

标签: wicket response

我的输出数据有问题。

@Override
protected ResourceResponse newResourceResponse(Attributes attributes) {
    ResourceResponse response = new ResourceResponse();
    response.setContentDisposition(ContentDisposition.INLINE);
    response.disableCaching();

    StringBuilder stringBuilder = new StringBuilder(DEFAULT_CONTENT_TYPE);
    stringBuilder.append(";").append(charset == null ? DEFAULT_CHARSET : charset);
    response.setContentType(stringBuilder.toString());
    response.setLastModified(Time.now());

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    try {
        fillOutputStream(outputStream);
    } catch (IOException e) {
        logger.error("Error when try to fill data for html report", e);
    }
    String message = null;
    try {
        message = outputStream.toString("UTF-8");
    } catch (UnsupportedEncodingException e) {
        logger.warn("Unknown encoding");
        message = outputStream.toString();
    }
    final CharSequence data = message;

    response.setContentLength(data.length());
    response.setWriteCallback(new WriteCallback() {
        @Override
        public void writeData(Attributes attributes) {
            attributes.getResponse().write(data);
        }
    });

    configureResponse(response, attributes);
    return response;
}

这里的数据是在fillOutputStream()方法中生成的html页面,并转换为CharSequence。

我已经记录了数据并且它具有我期望的正确内容,但是在结果页面中我已经修剪了结果。

1 个答案:

答案 0 :(得分:2)

String的长度不一定等于其字节数。

改为使用CountingOutputStream(例如来自guava)。