Question

Ok, j'ai passé trois sept heures de googler et des tests, et j'abandonne, j'ai demander de l'aide. J'ai utilisé pour développer sous Linux et tout était facile, maintenant j'utilise windows et telle chose facile comme le réglage correct des paramètres régionaux ne fonctionne pas.

J'ai créé des JSP avec le formulaire:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<form action="save-user" method="post">
    Name: <input type="text" name="name"><br>
    Email: <input type="text" name="email"><br>
    <input type="submit" value="Save">
</form>

Et Servlet:

    String name = request.getParameter("name");
    String email = request.getParameter("email");

- Je recevoir LeoÅ¡ au lieu de Leoš.J'utilise WildFly 8.0RC1, Windows 8 tchèque, firefox.

Ce que j'ai déjà essayé:

  1. demande.setCharacterEncoding("UTF-8");avant de lire d'abord paramètre
  2. Le filtre avec la demande.setCharacterEncoding("UTF-8");
  3. De la JVM des biens -Dfile.encoding=UTF-8
  4. Supprimer la norme JEE pile de pots de guerre
  5. Fixer la guerre d'emballage
  6. Split projet WEB et EJB module

Lors de l'entité JPA / DAO est déployé ensuite les signes diacritiques est mutilé.Si j'en commentaire de l'entité de servlet et de supprimer JPA entité de la guerre (actuellement supprimer OAuthLoginEJB.jar de WEB-INF/lib), puis-je recevoir encodage correct.Si j'ajoute cet EJB à l'époque, il échoue à nouveau.Est-il JBoss / WildFly bug?

Je peux fournir les sources: https://drive.google.com/file/d/0B-adlc5KThQDWTdYOEwxOUpTVEU/edit?usp=sharing Il est prêt à exécuter, vous n'avez même pas besoin de taper tchèque lettres, car ils sont pré-remplis.Merci

Était-ce utile?

La solution

Marko de Wildfly Dev Mailing Liste de diffusion m'a signalé à ce défaut: https://issues.jboss.org / navigation / CDI-411 et cette solution de contournement: http://weld.cdi-Spec.org/documentation/#3

Quand j'ai modifié mon web.xml, il a commencé à fonctionner:

<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>cz.literak.demo.oauth.servlets.EncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
        <filter-name>CDI Conversation Filter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

Autres conseils

Vous devez appeler request.setCharacterEncoding("UTF-8") avant la première lecture de la demande de InputStream.Les paramètres peuvent être lus par le filtre avant de définir l'encodage de votre servlet.Peut-être il ya une certaine filtre OAuthLoginEJB.jar ou dans toute autre dépendance, qui lit les paramètres d'abord?Typiquement, c'est un certain nombre de paramètres à des fins de débogage...Avec l'API Servlet 3.0, les servlets et les filtres peuvent être enregistrés par des annotations, de sorte que certains filtres peuvent être enregistrés en dépit de vide web.xml.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top