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=\u7528\u6237\u6CE8\u518C
register.title=\u65B0\u7528\u6237\u6CE8\u518C
name=\u59D3\u540D
password=\u5BC6\u7801
repassword=\u786E\u8BA4\u5BC6\u7801
telephone=\u7535\u8BDD\u53F7\u7801
username=\u7528\u6237\u540D
submit=\u7ACB\u5373\u6CE8\u518C
name.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
之后再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;
}
}
struts2国际化的更多相关文章
- 【转】Struts2国际化
原文章:http://www.cnblogs.com/hellokitty1/p/5083663.html 简单理解 国际化简称i18n,其来源是英文单词 internationalizati ...
- (六)Struts2 国际化
所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:国际化简介 国际化(Internationlization),通俗地讲, ...
- struts2系列(四):struts2国际化的多种方式
一.struts2国际化原理 根据不同的Locale读取不同的文本. 例如有两个资源文件: 第一个:message_zh_CN.properties 第二个:message_en_US.propert ...
- 菜鸟学SSH(三)——Struts2国际化自动检测浏览器语言版
前几天发了一篇Struts国际化的博客——<菜鸟学习SSH(二)——Struts2国际化手动切换版>,有网友提了一个意见,见下图: 于是就有了下面修改的版本: web.xml <?x ...
- struts2学习(10)struts2国际化
一.国际化简介: 二.struts2国际化设置: struts.xml: <?xml version="1.0" encoding="UTF-8" ?&g ...
- Struts2国际化-getText()方法
转自https://blog.csdn.net/qq_43560838/article/details/83747604 一:简单理解 国际化简称i18n,其来源是英文单词 international ...
- [JavaWeb基础] 016.Struts2 国际化配置
如果一个软件想要让其受众是全球或者是几个国家的人,那么这个软件就需要支持多种语言,那么我们就需要软件的国际化去对一些文字信息进行国际化处理.web也一样,当外国人打开我们的网站,要是看到满屏幕的中文, ...
- struts2 国际化
国际化概述: 软件国际化:一个软件根据来访者地区不同,显示不同语言. 国际化: * 必须有一组资源包: * 一组属性文件命名: 基本名称_语言(小写)_国家(大写).properties * 如:me ...
- java学习笔记 (9) —— Struts2 国际化
1.Test.java package com.i18n; import java.util.Locale; public class Test1 { public static void main( ...
随机推荐
- 使用 Roslyn 编译器服务
.NET Core和 .NET 4.6中 的C# 6/7 中的编译器Roslyn 一个重要的特性就是"Compiler as a Service",简单的讲,就是就是将编译器开放为 ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- nodejs进阶(1)—输出hello world
下面将带领大家一步步学习nodejs,知道怎么使用nodejs搭建服务器,响应get/post请求,连接数据库等. 搭建服务器页面输出hello world var http = require ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Spring Enable annotation – writing a custom Enable annotation
原文地址:https://www.javacodegeeks.com/2015/04/spring-enable-annotation-writing-a-custom-enable-annotati ...
- .NET面试题集锦①(Part一)
一.前言部分 文中的问题及答案多收集整理自网络,不保证100%准确,还望斟酌采纳. 1.面向对象的思想主要包括什么? 答:任何事物都可以理解为对象,其主要特征: 继承.封装.多态.特点:代码好维护,安 ...
- Tomcat常见问题及常用命令
很长时间不用tomcat好多命令都忘记了,所以准备自己记录下来,以便参考.刚好也希望可以开始养成记博客的好习惯. 1.查看java的版本号 进入java的安装目录后,使用命令:java -versio ...
- 【从零开始学BPM,Day5】报表配置及自定义功能页面开发
[课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第五天课程] 1.课程概要 Step 1 软件下载:H3 BP ...
- 如何开发FineReport的自定义控件?
FineReport作为插件化开发的报表软件,有些特殊需求的功能需要自己开发,开发的插件包帆软官方有提提供,可以去帆软论坛上找,本文将主要介绍如何开发一个自定义控件,这里讲讲方法论. 第一步:实例化一 ...
- 一步步学习javascript基础篇(8):细说事件
终于学到事件了,不知道为何听到“事件”就有一种莫名的兴奋.可能是之前的那些知识点过于枯燥无味吧,说起事件感觉顿时高大上了.今天我们就来好好分析下这个高大上的东西. 可以说,如果没有事件我们的页面就只能 ...