Struts2框架14.类型转换与国际化
2016-08-27 20:55
225 查看
为什么需要类型转换
在HTTP协议的Web应用中,客户端请求的所有内容(如在表单中输入的姓名、年龄等)均都义文编编码的方式传输到服务器端,但是服务器端的编程语言如java有着丰富的数据类型。因此,当这些参数进入应用程序时,它们必须被转换为适合的服务器端变成语言数据类型。我们使用的Struts2框架的类型转换工作是有开发者完成了,可以帮我们完成一些基本的类型转换,但是当这些转换工作无法完成我们的要求的时候,我们就可以自定义类型转换器。
创建自定义转换器
我们自定义转换器,需要继承org.apache.struts2.util.StrutsTypeConverter类,并重写
public Object convertFromString(Map map, String[] strings, Class aClass)//将传递的参数作为指定类型
public String convertToString(Map map, Object o)//将指定类型转换为String
convertFromString()方法中的参数介绍,map:本次请求中的所有参数和值,strings对应Action中的某个属性值,aClass设置返回值类型。这里我们做类型转换,主要用到strings参数。
convertToString()方法,map本次请求中的所有参数和值,o本次需要转换的对象
配置自定义类型转换器
需要在src目录下建立一个xwork-conversion.properties(全局)或ClassName-conversion.properties(局部)
1.应用于全局范围的类型转换器
转换类全名=类型转换器类全名。例如:java.util.Date=converter.DateConverter
2.应用于特定类的类型转换器
特定类的属性名=类型转换器类全名。例如:gender=converter.DateConverter
示例:
国际化
什么是国际化?
国际化就是,jsp页面不适用固定的中文或英文,而是通过<s:text/>标签来读取资源文件中的值,这样的好处就是在不同平台下显示不同的语言。
实现国际化的步骤:
1.配置资源文件
创建资源文件命名规则:资源文件名_国家与区域.properties,例如message_zh_CN.properties
注意:1.资源文件名.properties,这属于默认资源文件,当找不到指定国家资源文件的时候会调用默认资源文件。
2.资源文件要以键=值的方式。
2.在struts.xml配置资源文件
3.在jsp页面通过键来调用资源文件的值
在jsp页面中使用<s:text/>元素获取资源,例如:
在HTTP协议的Web应用中,客户端请求的所有内容(如在表单中输入的姓名、年龄等)均都义文编编码的方式传输到服务器端,但是服务器端的编程语言如java有着丰富的数据类型。因此,当这些参数进入应用程序时,它们必须被转换为适合的服务器端变成语言数据类型。我们使用的Struts2框架的类型转换工作是有开发者完成了,可以帮我们完成一些基本的类型转换,但是当这些转换工作无法完成我们的要求的时候,我们就可以自定义类型转换器。
创建自定义转换器
我们自定义转换器,需要继承org.apache.struts2.util.StrutsTypeConverter类,并重写
public Object convertFromString(Map map, String[] strings, Class aClass)//将传递的参数作为指定类型
public String convertToString(Map map, Object o)//将指定类型转换为String
convertFromString()方法中的参数介绍,map:本次请求中的所有参数和值,strings对应Action中的某个属性值,aClass设置返回值类型。这里我们做类型转换,主要用到strings参数。
convertToString()方法,map本次请求中的所有参数和值,o本次需要转换的对象
配置自定义类型转换器
需要在src目录下建立一个xwork-conversion.properties(全局)或ClassName-conversion.properties(局部)
1.应用于全局范围的类型转换器
转换类全名=类型转换器类全名。例如:java.util.Date=converter.DateConverter
2.应用于特定类的类型转换器
特定类的属性名=类型转换器类全名。例如:gender=converter.DateConverter
示例:
public class DateConverter extends StrutsTypeConverter { private SimpleDateFormat[] sdf = new SimpleDateFormat[]{ new SimpleDateFormat("MM/dd/yyyy"), new SimpleDateFormat("yyyy-MM-dd"), new SimpleDateFormat("yyyy年MM月dd日") }; /** * * @param map 本次请求中的所有参数和值 * @param strings 对应Action中的某个属性值 * @param aClass 设置返回值类型 * @return */ @Override public Object convertFromString(Map map, String[] strings, Class aClass) { System.out.println("1.字符串转对象"); String params = strings[0]; Date date = null; for (SimpleDateFormat sdfs : sdf) { try { date = sdfs.parse(params); } catch (ParseException e) { continue; } } return date; } /** * * @param map 本次请求中的所有参数和值 * @param o 本次需要转换的对象 * @return */ @Override public String convertToString(Map map, Object o) { System.out.println("3.对象转字符串"); Date date = (Date)o; return sdf[2].format(date); } }
国际化
什么是国际化?
国际化就是,jsp页面不适用固定的中文或英文,而是通过<s:text/>标签来读取资源文件中的值,这样的好处就是在不同平台下显示不同的语言。
实现国际化的步骤:
1.配置资源文件
创建资源文件命名规则:资源文件名_国家与区域.properties,例如message_zh_CN.properties
注意:1.资源文件名.properties,这属于默认资源文件,当找不到指定国家资源文件的时候会调用默认资源文件。
2.资源文件要以键=值的方式。
2.在struts.xml配置资源文件
<constant name="struts.custom.i18n.resources" value="message"/>
3.在jsp页面通过键来调用资源文件的值
在jsp页面中使用<s:text/>元素获取资源,例如:
<s:text name="regs.username"/>name属性为资源文件中的键。
相关文章推荐
- 14.如何自学Struts2之Struts2类型转换[视频]
- Struts2 入门4 数据校验_类型转换_国际化
- C++ Primer学习笔记——$14 操作符重载、函数对象及类类型转换
- 《Struts2框架 》学习之类型转换
- 【Struts2框架】第七节类型转换-类型转换原理和自定义类型转换器实例
- 专题二 符号的技巧---- 14.优先级和类型转换分析
- 7.类型转换、消息处理与国际化
- 笔记02 文件上传、文件下载、类型转换器、国际化的支持
- day27-struts2---day02( 类型转换,数据校验,国际化,拦截器)
- 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
- c++primer第十四章重载运算与类型转换小结-14
- 框架 day28 Struts2-封装数据,类型转换,数据校验,国际化,拦截器
- 14 重载运算和类型转换
- Struts2框架(五)——数据转移:OGNL和类型转换
- struts2 笔记02 文件上传、文件下载、类型转换器、国际化的支持
- C++ 学习笔记(14)重载运算与类型转换、函数对象、function库
- struts2框架类型转换有关内容
- Struts2框架下自定义转换类型使用
- C#中数组,类型转换,
- 数据类型转换的整理