2010-03-03 11 views
0

J'essaie d'utiliser l'encodage UTF-8 pour l'application Spring que je développe, mais j'ai du mal à obtenir le codage correct lors de l'insertion des attributs des carreaux.Problème de codage des tuiles

je ce fragment dans mon modèle JSP:

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title><tiles:getAsString name="title" /></title> 
</head> 
<body> 
    <tiles:insertAttribute name="header" ignore="true" /> 
.... 

et dans mon fichier de configuration XML tuiles J'ai quelque chose comme:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE tiles-definitions PUBLIC 
    "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" 
    "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> 
<tiles-definitions> 
    <definition name="tiles:base" template="/WEB-INF/views/templates/main.jsp"> 
    <put-attribute name="title" value="Título" /> 
... 

je vérifier dans eclipse que ces fichiers ont UTF- 8 encodage. Le mot transmis dans l'attribut title n'est pas affiché correctement (les caractères accentués sont affichés de manière incorrecte) dans la page bien que le reste de la JSP soit correct (par exemple le fragment JSP qui est inséré dans l'en-tête). Si je change l'encodage en ISO-8859-1 le titre est OK, mais le reste de la page est faux. Il semble que je ne puisse pas changer l'encodage en UTF-8 dans mon fichier de tuiles. J'ai également cherché "ISO-8859-1" dans les fichiers que j'ai créés et je n'ai pas configuré cette configuration dans un fichier.

Quelqu'un peut-il me dire comment puis-je configurer l'encodage correct pour les carreaux?

Merci

Répondre

3

Il était un problème avec le jeu de caractères, pas avec l'encodage. J'ai dû mettre

<%@ page contentType="text/html; charset=utf-8"%> 

dans chaque JSP et cela a fonctionné. Je ne sais pas s'il existe un moyen plus simple de configurer ceci dans toutes les pages JSP d'une application Web Spring.

1

Une autre manière pourrait être une utilisation de ReloadableResourceBundleMessageSource (avec la propriété defaultEncoding = "UTF-8") aussi pour le contenu qui est inséré à partir des tuiles.

que je voulais dire, vous pouvez passer un mot-clé de tuiles, et l'utiliser pour le contenu de sortie nécessaire de l'ensemble de ressources, comme ceci:

<tiles:useAttribute id="title_key" name="title"/> 
<spring:message code="${title_key}"/> 
+0

'' a travaillé pour moi! – naXa

8

Ajouter ce qui suit à web.xml. Cela a le même effet que l'ajout de l'en-tête dans chaque fichier JSP.

web.xml:

<web-app> 
    ... 
    <jsp-config> 
     <jsp-property-group> 
      <url-pattern>*.jsp</url-pattern> 
      <page-encoding>UTF-8</page-encoding> 
      <trim-directive-whitespaces>true</trim-directive-whitespaces> 
     </jsp-property-group> 
    </jsp-config>  
</web-app> 
+1

Cette réponse devrait être au sommet car elle fonctionne comme un charme et est beaucoup mieux que de spécifier le charset dans chaque jsp. –