java struts2入门学习---国际化
一、国际化的概念
1、不同国家的人访问同一个网站,显示的语言不同。
2、对JSP页面进行国际化
属性(properties)文件命名规则:基名---语言--国家如, message_zh_CN.properties
>>>使用标签获取相对应的值,如:
<s:textfield key="login.username" name="username"/>
<s:submit key="login.submit"/>
login.username与属性(properties)文件中的key值相对应。
>>>给{0},{1}等占位符动态赋值
<s:text name="属性中的key">
<s:param>属性值</s:param>
二、实例1
1、需求:访问同一个页面,不同语言的访问者,显示不同语言的页面
1)英文访问者访问页面
2)中文访问者访问页面
2、代码分析
login_i18n.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login</title>
</head>
<body>
<s:form action="LoginAction" method="POST">
<s:textfield key="login.username" name="username"/>
<s:submit key="login.submit"/>
</s:form>
</body>
</html>
message_en_US.properties
login.username=USERNAME
login.submit=LOGIN
message_zh_CN.properties
login.username=\u7528\u6237\u540D
login.submit=\u767B\u5F55
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>
<!--<include file="config/upload.xml"></include>-->
<!-- 加载其他配置文件 -->
<!-- <include file="config/upload-interceptor.xml"></include> -->
<constant name="struts.custom.i18n.resources" value="message"></constant>
</struts>
struts2的拦截器在项目启动时就已经加载到内存中了,主要通过struts.xml,这里只是测验国际化,所以将其他都注释掉了,在常量中配置i18n的拦截器的值,这里值就为基值,不需要将语言和国家带上;然后当jsp页面调用值时,使用struts2自带的标签将用户对应语言的值加载进来。
拦截器的作用就是将配置文件加载到内存中,标签的作用就是将对应语言的值加载到页面中去。
三、实例2
1、需求:
2、代码分析
在实例1的基础上增加动态参数注入。
message_en_US.propertiest和message_zh_CN.properties中增加两个参数如下所示:
login.hello=hello {0},I am {1}
在login_i18n.jsp页面中新增加如下代码:
<hr>
<s:text name="login.hello">
<s:param>tom</s:param>
<s:param>amos</s:param>
</s:text>
使用<s:text>标签来调用带参数的属性值,同时使用<s:param>标签来给参数赋值,其中顺序就与参数的顺序对应。
3.综合运用
能不能将参数值不写入到jsp页面中,因为这样很不方便,可不可以直接配置到properties属性文件中?
将login_i18n.jsp页面中的参数内容改为如下:
<s:text name="login.hello">
<s:param><s:text name="login.tom"></s:text></s:param>
<s:param><s:text name="login.amos"></s:text></s:param>
</s:text>
在properties文件中分别配置如下:
login.tom=TOM
login.amos=AMOS
/*******us上面,cn下面********/
login.tom=\u6C64\u59C6
login.amos=\u963F\u83AB\u65AF
这样将参数配置到properties中使用<s:text >标签再获取属性(properties)文件中的值,再根据不同语言进行显示,如下所示:
1)中方显示
2)英文显示:
本文只是讲了简单的配置,具体实现可参考I18nInterceptor拦截器的实现。
本文源码:https://github.com/amosli/strut2_learn struts2 国际化
java struts2入门学习---国际化的更多相关文章
- java struts2入门学习实例--将客户端IP地址和访问方式输出到浏览器
实例1:实现客户端IP地址和访问方式输出到浏览器. IpAction.java package com.amos.web.action; import javax.servlet.http.HttpS ...
- java struts2入门学习--OGNL语言基本用法
一.知识点学习 1.struts2中包含以下6种对象,requestMap,sessionMap,applicationMap,paramtersMap,attr,valueStack; 1)requ ...
- java struts2入门学习--基于xml文件的声明式验证
一.知识点总结 后台验证有两种实现方式: 1 手工验证顺序:validateXxx(针对Action中某个业务方法验证)--> validate(针对Action中所有的业务方法验证) 2 声明 ...
- java struts2入门学习--OGNL语言常用符号和常用标签学习
一.OGNL常用符号(接上一篇文章): 1.#号 1)<s:property value="#request.username"/> 作用于struts2的域对象,而不 ...
- java struts2入门学习---自定义类型转换
自定义类型转换器的作用就是将struts无法识别的类型转换成自己所需要的. 比如输入:广东-东莞-虎门,对应的输出时能输出:广东省 东莞市 虎门(镇/区) 这里涉及到的知识点即是将String转换为任 ...
- java struts2入门学习---文件下载的二种方式
一.关于文件下载: 文件下载的核心思想即是将文件从一个地方拷贝到另一个地方. 1.传统方式: 在Action中加入大量servlet api 操作.优点是好理解,缺点是耦合度高. 2.stream方式 ...
- java struts2入门学习---异常处理和类型转换
一.struts2对异常的处理 1.自定义局部异常: <action> <exception-mapping result="sonException" exce ...
- java struts2入门学习---中文验证、对错误消息的分离、结果(result)类型细节配置
一.需求 利用struts2实现中文验证并对错误消息的抽离. 详细需求:用户登录-->不填写用户名-->页面跳转到用户登录页面,提示用户名必填(以英文和中文两种方式提示)-->填写英 ...
- java struts2入门学习---拦截器学习
一.拦截器,拦截器栈 1.拦截器的作用 拦截器本质上和servlet的过滤器是一样的.在struts2中,拦截器能够对Action前后进行拦截,拦截器是一个可插拨的,你可以选择使用拦截器,也可以卸载拦 ...
随机推荐
- C# 简单日志文本输出
第一种 直接文件IO流写日志文件 using System.IO; public static void WriteLog(string strLog) { string sFilePath=&qu ...
- Unable to create new web application
When I try to create a new web application, it just shows message as 'This should'nt take too long ...
- 如何让Fiddler可以抓取https的请求
转自:https://jingyan.baidu.com/article/00a07f38bb4f4682d028dcd2.html Fiddler通过在本机开启了一个http的代理服务器来进行htt ...
- Bossies 2015: The Best of Open Source Software Awards
InfoWorld editors and contributors pick the top open source software for data centers, clouds, devel ...
- 【BLE】CC2541之加入自己定义任务
本篇博文最后改动时间:2017年01月06日,11:06. 一.简单介绍 本文介绍怎样在SimpleBLEPeripheralproject中.加入一个香瓜任务. (香瓜任务与project原有任务相 ...
- iOS编程(双语版) - 视图 - Transform(转换)
视图有一个transform属性,它描述了应该如何绘制该视图. 该属性是CGAffineTransform结构体,它代表了3 x 3的变换矩阵(线性代数). 下面的代码让两个矩形视图旋转45度 (Ob ...
- Android 之 沉浸式状态栏及顶部状态栏背景色设置
现在很多应用都引用了沉浸式状态栏,如QQ,效果下图: 效果很酷炫,其实设置也很简单.但是,需要注意的是,这种效果只能在API19以及以上版本中才能够做到. 方法一: 首先,如果想让界面Activity ...
- 第八周(1) Word信函与邮件
第八周(1) Word信函与邮件 教学时间 2013-4-15 教学课时 2 教案序号 13 教学目标 1.学会使用word制作信封和标签2.理解邮件合并的概念和功能3.学会利用邮件合并批量制作文档 ...
- winf
真的,先亮注册码!!(直接复制即可) 注册码: <第1组> 用户名:大眼仔~旭(Anan) 注册码:01000000007002140V <第2组> 用户名:大眼仔~旭(Ana ...
- Elasticsearch cluster health: yellow unassigned shards
查看ES各个分片的状态 $ curl -XGET http://127.0.0.1:9200/_cluster/health?pretty { "cluster_name" : & ...