我有一个 Tapestry 应用程序将其页面作为 UTF-8 提供服务。也就是说,服务器响应具有标题:
Content-type: text/html;charset=UTF-8
现在在这个应用程序中有一个页面应该使用 ISO-8859-1 编码。也就是说,服务器响应应该有这个头:
Content-type: text/html;charset=ISO-8859-1
这该怎么做?我不想更改整个应用程序的默认编码。
基于谷歌搜索,我尝试了以下操作:
@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 的 Servlet 过滤器来执行此操作。包装器覆盖 setContentType() 以强制响应所需的编码。