J'ai une application web Java Spring MVC pilotée par des annotations et exécutée sur un serveur web jetty (actuellement dans le plugin maven jetty).
J'essaie de mettre en place un support AJAX avec une méthode de contrôleur renvoyant un texte d'aide sous forme de chaîne. Les ressources sont en encodage UTF-8 et la chaîne aussi, mais ma réponse du serveur vient avec
content-encoding: text/plain;charset=ISO-8859-1
même lorsque mon navigateur envoie
Accept-Charset windows-1250,utf-8;q=0.7,*;q=0.7
J'utilise en quelque sorte la configuration par défaut de Spring
J'ai trouvé une astuce pour ajouter ce bean à la configuration, mais je pense qu'il n'est tout simplement pas utilisé, parce qu'il dit qu'il ne supporte pas l'encodage et qu'un encodage par défaut est utilisé à la place.
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value="text/plain;charset=UTF-8" />
</bean>
Le code de mon contrôleur est le suivant (notez que ce changement de type de réponse ne fonctionne pas pour moi) :
@RequestMapping(value = "ajax/gethelp")
public @ResponseBody String handleGetHelp(Locale loc, String code, HttpServletResponse response) {
log.debug("Getting help for code: " + code);
response.setContentType("text/plain;charset=UTF-8");
String help = messageSource.getMessage(code, null, loc);
log.debug("Help is: " + help);
return help;
}