LoginSignup
3
2

More than 5 years have passed since last update.

【Struts】アクションフォームの値を\<bean:write\>で書きだすと文字化けしてしまう

Last updated at Posted at 2015-12-14

アクションフォームBeanはエンコード方式が指定されていても、それを確かめる前に値が格納されるため日本語を扱う場合は、文字化けが起こります。

アクションフォームクラスの中で、毎回エンコード処理を記述するのは面倒なので、フィルターという機能で解決しました。

参考記事:Javaの道:アクション・フォームBean

tomcatのサンプルプロジェクトにあるSetCharacterEncodingFilter.javaを使います。これを自分のプロジェクトに入れた後に、web.xmlで設定します。下記を記述して下さい。

<!-- web.xml -->
<web-app>
    <filter>
        <!-- フィルタ名を記載します。 -->
        <filter-name>EncodeFilter</filter-name>
        <!-- フィルタ処理の際のクラスを指定します。 SetCharacterEncodingFilterクラスは filtersパッケージ内にあります。 -->
        <filter-class>filters.SetCharacterEncodingFilter</filter-class>
        <!-- パラメータ値にエンコード方式を指定します。 -->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <!-- すべてのURLパターンでフィルタ処理が 行われるように指定します。 -->
    <filter-mapping>
        <filter-name>EncodeFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

今回はUTF-8を指定しています。アクションフォームの値の文字コードを設定しても、それを表示するjsp側にも文字コードをUTF-8と設定しないと文字化けは治りません。下記を記述しておきましょう。

<%-- test.jsp --%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2