stuts2中的类型转换器

在进行注册用户或者其他操作的时候,由于国家地区等的不同,我们需要填写的日期,我们的写法是yyyy-MM-dd,但是国外的是dd-MM-yyyy,这就存在差别。才存放到数据库的时候可能会出现问题。所有需要进行类型转换。

类型转换的方式有两种,一种是局部的类型转换,一种是全局的类型转化,一下先编写一个时间日期的类型转的工具。

package com.zeroyoung.web.convert;

import org.apache.struts2.util.StrutsTypeConverter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Map;
import java.util.Date;
/**
 *把表单中的MM/dd/yyyy格式的数据转成日期类型
 *   把数据库中的本地日期格式,转成MM/dd/yyyy形式输出
 *  Created by yanglin on 2016/11/2.
 */

//第一步:编写一个类,继承自StrutsTypeConverter,实现convertFromString,convertToString抽象方法
public class DateConvert extends StrutsTypeConverter {
    private DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
    //把字符串转化为日期类型
    public Object convertFromString(Map map, String[] strings, Class aClass) {
        if (strings ==null || strings.length==0){
            return null;
        }
        String date = strings[0];

        if(aClass==java.util.Date.class){
            try {
                Date parse = format.parse(date);
                System.out.println(parse);
                return parse;
            } catch (ParseException e) {
                e.printStackTrace();
                return null;
            }
        }
        return null;
    }

    //把日起格式转换成字符串
    /**
     *
     * @param map
     * @param o :要转换的数据
     * @return
     */
    public String convertToString(Map map, Object o) {
        if(o instanceof Date){
            Date date = (Date)o;
            return format.format(date);
        }
        return null;
    }
}

从上面可以看出,我们需要转换一个数据类型需要继承struts2当中的StrutsTypeConverter这个类
而这个类的父类是com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter,DefaultTypeConverter是实现了import com.opensymphony.xwork2.conversion.TypeConverter;TypeConverter当中就一个convertValue()但是有6个参数,DefaultTypeConverter把其实现了之后将参数减少到三个,StrutsTypeConverter把其进一步的简化,然后形成了两个参数的方法。主要是将一个类型转化为String,然后String再转化为原来的类型。

局部类型转换:
在javabean的目录下javabean的名称-conversion.properties

#局部类型转换器文件名的命名规范:javabean的名称-conversion.properties
#局部类型转换器声明,声明方式是以使用的属性名称作为key,以类型转换器的全类名作为value
birthday=com.itheima.web.converter.MyTypeConvertor

全局类型转化:
在src目录下建立一个xwork-conversion.properties

#全局类型转换器文件名的命名规范:xwork-conversion.properties。文件放到类路径的根路径
#全局类型转换器声明,声明方式是以使用的数据类型(全类名)作为key,以类型转换器的全类名作为value
java.util.Date=com.itheima.web.converter.MyTypeConvertor
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值