J'ai une application Tapestry qui sert sa page en UTF-8. Cela est, les réponses du serveur ont en-tête:Définition de l'encodage ISO-8859-1 pour une seule page Tapestry 4 dans une application totalement UTF-8
Content-type: text/html;charset=UTF-8
maintenant dans cette application il y a une seule page qui doit être servi avec le codage ISO-8859-1. Autrement dit, la réponse du serveur doit avoir cet en-tête:
Content-type: text/html;charset=ISO-8859-1
Comment faire? Je ne veux pas changer le codage par défaut pour toute l'application.
Basé sur google recherche J'ai essayé suivante:
@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";
}
}
Mais ni la définition de ces valeurs avec l'annotation @Meta ou méthode getOutputEncoding primordiale fonctionne. J'utilise Tapestry 4.0.2.
EDIT: J'ai fini par faire cela avec un filtre de servlet avec HttpServletResposeWrapper sous-classé. L'encapsuleur remplace setContentType() pour forcer le codage requis pour la réponse.
Hmm. Ceci définit l'encodage pour la requête * incoming *. Je devrais changer l'encodage pour la réponse sortante. Mon application Tapestry n'est pas celle qui gère la soumission de formulaire. Mon application ne sert que la page de formulaire. –
Le codage de réponse peut être défini à partir de la spécification 2.4. Êtes-vous dans un serveur J2EE 1.4? http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletResponse.html#setCharacterEncoding(java.lang.String) –