Мой фильтр должен редактировать HTML-ответ. Но когда я перейти к странице, это не делает ничего, потому чтоФильтр сервлета настаивает на отсутствии текста ответа
newResponse.toString();
возвращается null
.
Далее отладка показывает, что в рамках этого toString
метода writer
является null
Вот раздел, который, как представляется, проблема:
public ServletOutputStream getOutputStream() throws IOException {
if (getWriterCalled) {
throw new IllegalStateException("getWriter already called");
}
getOutputStreamCalled = true;
return super.getOutputStream();
}
public PrintWriter getWriter() throws IOException {
if (writer != null) {
return writer;
}
if (getOutputStreamCalled) {
throw new IllegalStateException("getOutputStream already called");
}
getWriterCalled = true;
writer = new PrintWriter(charWriter);
return writer;
}
public String toString() {
String s = null;
if (writer != null) {
s = charWriter.toString();
}
return s;
}
}
Полный код здесь:
Filter that uses a response wrapper to convert all output to uppercase
Вы завернули 'Writer', но не' OutputStream'. Ваш сервлет, вероятно, записывается непосредственно в 'OutputStream'. Используйте отладчик. –