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",并提交,查看效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值