struts2學習筆記之轉換器實現語言切換

第一步,在工程src目錄下新建屬性文件struts.properties,內容如下:

struts.custom.i18n.resources=globalMessages

第二步,在工程src目錄下新建屬性文件globalMessages_zh_CN.properties,內容如下:

HelloWorld=/u4f60/u597d

第三步,在工程src目錄下新建屬性文件globalMessages_en_US.properties,內容如下:

HelloWorld=Hello World

第四步,實現處理表單的Action,HelloWorld代碼如下:

  1. package com.dadao.struts2;
  2. import java.util.Locale;
  3. import com.opensymphony.xwork2.ActionSupport;
  4. import com.opensymphony.xwork2.util.LocalizedTextUtil;
  5. public class HelloWorld extends ActionSupport {
  6.     private static final long serialVersionUID = 1L;
  7.     private Locale loc;
  8.     private String message;
  9.     @Override
  10.     public String execute() throws Exception {
  11.         message=LocalizedTextUtil.findDefaultText("HelloWorld",loc);
  12.         return SUCCESS;
  13.     }
  14.     public Locale getLoc() {
  15.         return loc;
  16.     }
  17.     public void setLoc(Locale loc) {
  18.         this.loc = loc;
  19.     }
  20.     public String getMessage() {
  21.         return message;
  22.     }
  23. }

第五步,實現轉換器LocalConverter,代碼如下:

  1. package com.dadao.struts2;
  2. import java.util.Locale;
  3. import java.util.Map;
  4. import ognl.DefaultTypeConverter;
  5. public class LocalConverter extends DefaultTypeConverter {
  6.     @Override
  7.     public Object convertValue(Map context, Object value, Class toType) {
  8.         if(toType==Locale.class){
  9.             String local=((String[])value)[0];
  10.             return new Locale(local.substring(0,2),local.substring(3));
  11.         }else if(toType==String.class){
  12.             Locale local=(Locale)value;
  13.             return local.toString();
  14.         }
  15.         return null;
  16.     }
  17.     
  18. }
  19. 第六步,在工程src目錄下新建屬性文件xwork-conversion.properties,內容如下:
  20. java.util.Locale=com.dadao.struts2.LocalConverter
  21. 第七步,配置struts.xml文件,代碼如下:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE struts PUBLIC
    3.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    4.         "http://struts.apache.org/dtds/struts-2.0.dtd">
    5. <struts>
    6.     <package name="strutsPackage" extends="struts-default">
    7.         <action name="HelloWorld" class="com.dadao.struts2.HelloWorld">
    8.             <result>/index.jsp</result>
    9.         </action>
    10.     </package>
    11. </struts>

    第八步,完成index.jsp,代碼如下:

    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    2. <%@ taglib uri="/struts-tags" prefix="s" %>
    3. <%
    4. String path = request.getContextPath();
    5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    6. %>
    7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    8. <html>
    9.   <head>
    10.     <base href="<%=basePath%>">
    11.     <title>My JSP 'index.jsp' starting page</title>
    12.   </head>
    13.   
    14.   <body>
    15.         <s:form action="HelloWorld" method="post">
    16.         input language:<s:textfield name="loc"></s:textfield>
    17.         <br><s:submit></s:submit>
    18.         </s:form>
    19.         <s:property value="message"/>
    20.   </body>
    21. </html>

    第九步,測試,

  22. 可在文本框中輸入"en_US"和"zh_CN",並提交,查看效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章