У меня есть приложение 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.
EDIT: я закончил это с помощью фильтра Servlet с подклассом HttpServletResposeWrapper. Оболочка переопределяет setContentType(), чтобы принудительно потребовать кодировку для ответа.