「Spring MVC」MessageSourceを使ってページの国際化を実装する

1.properties の設定
Messages_ja.properties(日本語ロケール)

username=山田
profile=大学:{0} 出身:{1}

Messages_en.properties(英語ロケール)

username=yamada
profile= school:{0} hometown:{1}

2.applicationContext.xmlの設定

<bean id="messageSource"
            class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="/WEB-INF/Messages" />
</bean>

「WEB-INF」フォルダの「MessageRes.properties」を指定します
「ReloadableResourceBundleMessageSource」クラス指定されたベース名を使用してリソースバンドルにアクセスし、Spring ApplicationContext のリソースロードに参加する、
Spring 固有の MessageSource 実装。

3.コントローラ側(CftController.java)

package com.arkgame.study;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

import java.util.Locale;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class CftController {

      @Autowired
      MessageSource mgs; //DIの設定

      @RequestMapping(value = "/", method = GET)
      public String info(Locale locale) {
            String[] strArr = { "東京大学", "大阪" };
            
             //メッセージファイルのキーを指定
            System.out.println(mgs.getMessage("username", null, locale));
            
            //パラメータを指定
            System.out.println(mgs.getMessage("profile", strArr, locale));
            return "cft";
      }
}

メッセージを取得したい Java クラスで、MessageSource をプロパティとして定義します。そして @Autowired を付けて、Spring に設定(DI)します。

4.JSP側cft.jsp

<div>
<spring:message code="username" />
      <br />
<spring:message code="profile" arguments="東京大学,大阪" />
</div>

 

SpringMVC

Posted by arkgame