ページを UTF-8 として提供する Tapestry アプリケーションがあります。つまり、サーバーの応答には次のヘッダーがあります。
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() をオーバーライドして、応答に必要なエンコードを強制します。