1

Glassfish 4 でホストされている Entity クラスの Netbeans 7.3.1 テンプレートによって作成された単純な xhtml ページがあります。Entity クラスには、 anIDと a の2 つのフィールドしか含まれていませんName。「名前」フィールドに「 」という単語を書き込むと、「café」が保存されcaféます。私はインターネットに投稿されたすべての推奨事項に従いましたが、すべてが惨めに失敗しました. 少なくとも JSF 2.2 では、どれも機能していません。

カスタム フィルターを作成してみました。SpringCharacterEncodingFilterフィルターを使用すると、すべてのヘッダーに charset->UTF-8 が含まれます。ページの文字セットを Firebug で確認したところ、UTF-8 と表示されています。

私はアイデアが不足しています。持ってる人いる?

ところで、同じ Web サイト プロジェクトには RESTful Web サービスが含まれており、Web サービスは完全に機能し、同じエンティティと同じ値を保存します ( café)。これにより、問題は Facelets にあるという結論に至りましたが、どこにあるのでしょうか?

私はこのフィルターを使用しています:

public class CharacterEncodingFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        chain.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void destroy() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}

そしてweb.xml

<filter>
    <filter-name>UTFEncodingFilter</filter-name>
    <filter-class>filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UTFEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

このフィルターが使用されていないことがわかりました。on メソッドを配置するthrow ExceptionInit、ページが正常に読み込まれ、投稿されます。

4

3 に答える 3

4

サーバー構成ファイル自体にエンコーディングを入れようとしましたか.たとえば、glassfish-web.xmlにこの行を入れましたか?

<parameter-encoding default-charset="UTF-8"/>
于 2013-09-29T11:34:06.807 に答える
0

具体的な問題は、フィルターの初期化に失敗したために発生し、そのためサービスが開始されませんでした。

メソッドで例外をスローしたため、非常に単純な理由でフィルターを初期化できませんでしたinit()

@Override
public void init(FilterConfig filterConfig) throws ServletException {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

init()フィルターを正常に初期化する場合は、例外をスローしないでください。

@Override
public void init(FilterConfig filterConfig) throws ServletException {
    // NOOP.
}
于 2013-09-30T11:01:11.157 に答える