美文网首页
[Struts2]16-类型转换与国际化

[Struts2]16-类型转换与国际化

作者: 我相信你爱过gg | 来源:发表于2017-05-07 20:42 被阅读33次

为什么需要类型转换

在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属性为资源文件中的键。

相关文章

  • [Struts2]16-类型转换与国际化

    为什么需要类型转换 在HTTP协议的Web应用中,客户端请求的所有内容(如在表单中输入的姓名、年龄等)均都义文编编...

  • 7.类型转换、消息处理与国际化

    7.类型转换、消息处理与国际化 @(10_Struts2)[JavaEE, Struts2] 前边我们说过了 Ht...

  • Struts2类型转换技术

    1. Struts2 类型转换使用介绍 Struts2的类型转换几乎支持Java中各种数据类型的转换。甚至开发者还...

  • 类型转换

    1、Struts2内建类型转换器对于大部分常用类型,开发者根本不需创建自己的转换器,Struts2内置了常见数据类...

  • struts2注解类型转换国际化

    注解使用 导包@ParentPackage@Namespace@Action()默认action名称 默认动态配置...

  • Struts2学习笔记(第二天)

    .struts2中获取请求参数 扩展(一般不用,原理为ognl表达式) struts2中提供的类型转换 自定义类型...

  • Struts2干货笔记——第三天

    目录 1. Struts2国际化 1.1 资源包的编写 1.2 国际化配置 1.3 在struts2中国际化操作可...

  • Struts2中类型转换配置

    类型转换:将jsp页面的请求参数进行类型的转换后再赋值给action的属性 Struts2已经内建了对于Strin...

  • struts2实验3:struts2 国际化

    layout: post title: struts2实验3:struts2 国际化 categories: S...

  • Struts2拦截器详解

    在 Struts2 框架中,拦截器是其重要的组成部分,Struts2 的很多功能(数据校验、对象类型转换、文件上传...

网友评论

      本文标题:[Struts2]16-类型转换与国际化

      本文链接:https://www.haomeiwen.com/subject/bplptxtx.html