質問

OK、私は 3 7時間グーグルとテストとテストを費やして、あきらめなければならない、私は助けを求めなければなりません。 Linuxで開発していましたが、すべてが簡単でした、今、私はWindowsを使います、そして正しいロケールを設定しないような簡単なことが機能しません。

私は形式で単純なJSPを作成しました:

<%@ 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>
.

とサーブレット:

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

私はレオクの代わりにレオングを受けます。 Wildfly 8.0RC1、Windows 8チェコ、Firefox。

私がすでに試したこと:

  1. request.etpharacterencoding( "UTF-8");読む前に パラメータ
  2. Request.etchAracterencoding( "UTF-8");
  3. jvmプロパティ-dfile.encoding= UTF-8
  4. 戦争から標準JEEスタックジャーを削除
  5. 戦争包装を修正
  6. WebおよびEJBモジュールへの分割プロジェクト
  7. JPAエンティティ/ DAOが展開されている場合、DIACRITICSはマングルされています。サーブレットからエンティティをコメントアウトして、WARからJPAエンティティを削除した場合(現在Web-INF / LIBからOAuthLogineJB.jarを削除)、正しいエンコーディングを受け取ります。このEJBを追加した場合は、もう一度失敗します。それはJBoss / Wildflyのバグですか?

    私は完全なソースを提供することができます: https://ドライブ。 google.com/file/d/0b-adlc5kthqdwtdyoewxouptveu/edit ?usp= sharing それは実行する準備ができています、あなたはプレフィルドのようにチェコの文字を入力する必要さえありません。ありがとう

役に立ちましたか?

解決

Wildfly DevのメーリングリストからのMARKOはこの欠陥に指していました: https://issues.jboss。org / browse / cdi-411 とこの回避策: http://weld.cdi-spec.org/documentation/3

web.xmlを変更したとき、それは機能し始めました:

<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>
.

他のヒント

要求InputStreamから最初に読み込まれる前に、request.setCharacterEncoding("UTF-8")を呼び出す必要があります。サーブレットにエンコードを設定する前に、パラメータをフィルタで読み取ることができます。OAuthLoginEJB.jarまたは他の依存関係にはいくつかのフィルタがあります。これは最初にパラメータを読みますか?通常、これはデバッグのためのパラメータです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top