Spring MVC: CharacterEncodingFilter; pourquoi seulement des réponses de codage par la force?
J'ai été jeter un oeil sur le CharacterEncodingFilter fourni par Spring MVC. Je me demandais pourquoi il était seulement possible de définir le temps de réponse d'encodage lors de la demande d'encodage a été contraint à l'encodage? Pourquoi ne pas être en mesure de définir une valeur par défaut de réponse de l'encodage, si rien n'est spécifié dans l'en-tête accept champs? Ou si l'encodage n'a été présent dans la requête?
Le code:
@Override
protected void doFilterInternal(
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
if (this.encoding != null && (this.forceEncoding
|| request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(this.encoding);
if (this.forceEncoding) {
response.setCharacterEncoding(this.encoding);
}
}
filterChain.doFilter(request, response);
}
J'ai trouvé cette référence
https://jira.springsource.org/browse/SPR-3328?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel
indiquant que la réponse de codage ne peut être réglé que lorsque la demande d'encodage est de force définie. Pourquoi?
Merci d'avance,
Martin
- Peut-être qu'il est lié avec stackoverflow.com/questions/3616359/... (si je ne suis pas en manque de quelque chose)
Vous devez vous connecter pour publier un commentaire.
Je peux vous dire que Juergen Hoeller dit sur le lien https://jira.springsource.org/browse/SPR-3328?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel,
Ajouter le filtre suivant dans web.xml (Servlet 2.4+) pour définir l'encodage :
EDIT :
CharacterEncodingFilter : Les navigateurs actuels ne sont généralement pas définir un codage de caractères, même si cela est spécifié dans le code HTML de la page ou de la forme. Le ci-dessus filtre peut s'appliquer soit son encodage si la demande n'est pas déjà spécifier un encodage, ou à appliquer ce filtre est de l'encodage en tout cas("forceEncoding"="true"). Si nous strictement voulez encoder des caractères, on l'a mis de force.
Je pense que
Boris's
lien en commentaire de répondre à ces questions.Si rien ne fonctionne, vous pouvez créer un filtre ( haricot ) dans security-Context.xml et ensemble forceEnconding=true;
N'oubliez pas de définir les nouveaux filtres personnalisés: