Struts2 - 国際化
Struts2を使い、国際化する方法。
【国際化の流れ】
国際化リソース読み込み
国際化出力
【リソースファイルの有効範囲】
action : action内で有効、優先順位が一番高い
- baseNameがaction名と同じ
- action*.classと同じパス内
- LoginAction.java ⇒ LoginAction.properties(OR LoginAction
.properties)
package : パッケージ内で有効
- リソース名 : package
- リソース名 : package
global : アプリ全体(Action,view,validatorなど)で有効
【viewのリソース読み込み&出力】
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html> <!-- viewResourcesパッケージ内のbaseNameがloginFormの国際化リソース --> <s:i18n name="viewResources.loginForm"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF=8" /> <!-- 国際化出力 --> <title><s:text name="loginPage"/></title> </head> <body> <s:form action="login"> <!-- 国際化出力 --> <s:textfield name="username" key="user"/> <s:textfield name="password" key="pass"/> <s:submit key="login"/> </s:form> </body> </html> </s:i18n>
【actionのリソース読み込み&出力】
package lee.action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { // 略 public String execute() throws Exception { // メッセージ取得 System.out.println(getText("mess1")); System.out.println(getText("mess2")); return "success"; } }
【置き替え文字】
welcome={0},ようこそ。{1}。
<s:text name="welcome"> <s:param><s:property value="username"/></s:param> <!-- EL --> <s:param>${d}</s:param> </s:text>
getText("welcome" , new String[]{"Alex", "2016/01/01"}));