У меня есть приложение Tapestry, которое обслуживает свою страницу как UTF-8. То есть ответы сервера имеют заголовок:
Content-type: text/html;charset=UTF-8
Теперь в этом приложении есть одна страница, которая должна обслуживаться с кодировкой ISO-8859-1. То есть ответ сервера должен иметь следующий заголовок:
Content-type: text/html;charset=ISO-8859-1
Как это сделать? Я не хочу менять кодировку по умолчанию для всего приложения.
На основе поиска в Google я попробовал следующее:
@Meta({ "org.apache.tapestry.output-encoding=ISO-8859-1",
"org.apache.tapestry.response-encoding=ISO-8859-1",
"org.apache.tapestry.template-encoding=ISO-8859-1",
"tapestry.response-encoding=ISO-8859-1"})
abstract class MyPage extends BasePage {
@Override
protected String getOutputEncoding() {
return "ISO-8859-1";
}
}
Но ни установка этих значений с помощью аннотации @Meta, ни переопределение метода getOutputEncoding не работают.
Я использую Tapestry 4.0.2.
РЕДАКТИРОВАТЬ: я закончил делать это с фильтром сервлетов с подклассом HttpServletResposeWrapper. Оболочка переопределяет setContentType (), чтобы принудительно установить кодировку для ответа.