zoukankan      html  css  js  c++  java
  • struts2国际化

    struts2国际化

    1:什么是国际化?

    国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

    2:在什么样的状况下使用国际化?

    国际化是指的多语言支持,比方说你登录一个系统后,页面上的标签可以默认显示中文,或者默认显示英文。国际化在web开发中比较常用,以便于不同母语的用户使用系统。

    3:为什么使用国际化?

    原因:因为语言种类繁多

    国际化需要在原来的基础上添加需要的资源文件,现在要实现 中文和英文之间的转换为例

    首先创建出两个资源文件,分别是message.properties 和message_cn.properties

    message_cn.properties  如下:(英文)

    register.page=HouserRent-User Register
    register.title=New User Register
    name=Name
    password=Password
    repassword=RePassword
    telephone=Telephone
    username=UserName
    submit=Register Now

    name.null=Name cannot be null

    message.properties如下:(中文)

    register.page=u7528u6237u6CE8u518C
    register.title=u65B0u7528u6237u6CE8u518C
    name=u59D3u540D
    password=u5BC6u7801
    repassword=u786Eu8BA4u5BC6u7801
    telephone=u7535u8BDDu53F7u7801
    username=u7528u6237u540D
    submit=u7ACBu5373u6CE8u518C

    name.null=u7528u6237u540Du4E0Du80FDu4E3Au7A7A

    之后再struts.xml中添加constant 国际化标签

     <constant name="struts.custom.i18n.resources" value="message"></constant>

    完成。

    然后也可以提升约束的方法,利用xml文件,name不能为空进行约束,配置的是  languageActionvalidation.xml

    <field name="name">
    <!-- 不能为空 -->
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message key="name.null"/>
    </field-validator>
    </field>

    具体代码如下:

    准备界面:register.jsp

    注:使用ognl表达式展示国际化!<s:text>,也可以放在<s:i81n>标签中。

    <html>
    <head>
        <title><s:text name="register.page"></s:text></title>
    </head>
    <body>
        <s:fielderror></s:fielderror>
        <h2><s:text name="register.title"></s:text></h2>
        <s:form action="loignAction">
        <table>
        <tr>
        <td><s:text name="name" ></s:text></td>
        <td><s:textfield name="name" key="name"></s:textfield><td>
        </tr>
        <tr>
        <td><s:text name="password"></s:text></td>
        <td><s:textfield name="password"></s:textfield></td>
        </tr>
        <tr>
        <td><s:text name="repassword"></s:text></td>
        <td><s:textfield name="repassword"></s:textfield></td>
        </tr>
        <tr>
        <td><s:text name="telephone"></s:text></td>
        <td><s:textfield name="telephone"></s:textfield></td>
        </tr>
        <tr>
        <td><s:text name="username"></s:text></td>
        <td><s:textfield name="username"></s:textfield></td>
        </tr>
        <tr>
        <td colspan="2"><s:submit
        value="%{getText('submit')}"></s:submit></td>
        </tr>
        </table>
        </s:form>
    </body>
    </html>

          在struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    	"http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
    
         <!-- 在struts2.xml中配置指定资源文件的基名 -->
        <constant name="struts.custom.i18n.resources" value="message"></constant>
        <!-- 指定编码方案,如果想要转换国际化 必须指定为UTF-8 默认就是u8-->
        <constant name="struts.i18n.encoding" value="UTF-8"></constant>
        <!--  -->
        <constant name="struts.ui.theme" value="simple"></constant>
         <!-- 修改该文件,tomcat不用重启 -->
        <constant name="struts.devMode" value="true"/>
        <package name="default" namespace="/" extends="struts-default">
            <action name="loignAction" class="cn.Action.languageAction">
            <result name="success">/index.jsp</result>
              <result name="input">/register.jsp</result>
            </action>
        </package>
    </struts>
    

      创建Action类,并继承自ActionSupport类,重写execute(),封装对应的属性:

    package cn.Action;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class languageAction extends ActionSupport {
    	private static final long serialVersionUID = 1L;
    	private String name;
    	private String password;
    	private String repassword;
    	private String telephone;
    	private String username;
    	
    	public static long getSerialversionuid() {
    		return serialVersionUID;
    	}
    	
    	
    	public String getName() {
    		return name;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public String getRepassword() {
    		return repassword;
    	}
    	public String getTelephone() {
    		return telephone;
    	}
    	public String getUsername() {
    		return username;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	public void setRepassword(String repassword) {
    		this.repassword = repassword;
    	}
    	public void setTelephone(String telephone) {
    		this.telephone = telephone;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	
    	
    	@Override
    	public String execute() throws Exception {
    		return SUCCESS;
    	}
    }
    

      

     

  • 相关阅读:
    穿越之我是码农 1024 篇
    误删文件机房停电黑客入侵_你最怕什么?
    AI觉醒进行时:程序员你怕了吗?
    未来已来!阿里小蜜AI技术揭秘
    千人千面智能淘宝店铺背后的算法研究登陆人工智能顶级会议AAAI 2017
    CDN缓存不命中排查
    现实需求巨大_技术尚未成熟_学界与业界思维大碰撞
    围观阿里云最会赚钱的人!价值2万元邀请码不限量发送
    今晚19:30直播阿里巴巴大规模持续集成的技术演进之路_欢迎免费观看
    工作压力山大?码农这么减压最有效
  • 原文地址:https://www.cnblogs.com/yangronglin/p/5957140.html
Copyright © 2011-2022 走看看