Struts学习----struts2类型转换

73 篇文章 0 订阅
52 篇文章 0 订阅

struts2默认支持类型转换

  • 字符串  <-->  指定类型   之间转换
         字符串 转成 指定类型:表单提交,浏览器发送服务器   
         指定类型 转成 字符串:标签回显,服务器发送浏览器
  • 指定类型
         8个基本类型、以及包装类
         时间 Date(字符串有格式要求:yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss)
         数组、List、Map

public class MyDateConverter extends DefaultTypeConverter {

	@Override
	//参数1: 待转换的对象
	//参数2: 需要被转换成的类型
	public Object convertValue(Object value, Class toType) {
		try {
			//1 创建sdf 格式化
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
			//2 判断参数2 的 类型
			if(toType == Date.class){
				// Date.class=> 字符串转日期
				// 2012/12/12 => Date.class
				String[] params = (String[]) value;
				
				return sdf.parse(params[0]);
			}
			if(toType == String.class){
				// String.class = > 日期转字符串
				// Date => 2012/12/12
				Date date = (Date) value;
				
				return sdf.format(date);
			}
		} catch (ParseException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
		
		throw new RuntimeException("不可能!!");
	}
}

自定义类型转换器

              1.自定义类型转换器的实现类

  •        方案1:实现接口:TypeConverter,有一个方法,但参数过多。
  •        方法2:继承默认实现类:DefaultTypeConverter 。提供简洁方法convertValue(Object , Class)

              2.convertValue(Object value ,  Class toType)的使用

  •  表单提交,浏览器发送到服务器。浏览器发送的肯定字符串String,需要转换成指定的类型。例如Date类型
             参数1:value,表示浏览器发送的数据。类型是String[] ,底层使用request.getParameterValues("...")
             参数2:toType,表示需要转换的类型,java.uilt.Date类型
      操作:例 如果toType是 Date类型,表示希望将 字符串转成 时间
      if(toType == java.util.Date.class){
    
          //获得数据
    
          String[] params = (String[])value;
    
         //转成成时间
    
      }

     

  • 标签回显,服务器发送 浏览器,类型之前已经从字符串转成时间,现在希望将时间再转换成 字符串。
               参数1:value,表示服务器已经转成好的时间。类型Date。
               参数2:toType,表示需要转换的类型,String类型
    操作:
  if(toType == String.class){

    // 将数据强转时间

    Date date = (Date)value;

    // 格式化

  }

 注册转换器

            1.分类:

  • 局部转换器:只对当前Action类有效。
              限制: 只能对action类的属性进行转化,不能对javabean中属
  • 全局转换器:对所有的Action类有效。

          注:自定义转换器很少使用,一般情况使用默认就可以。

            2.转换实现

public Object convertValue(Object value, Class toType) {
		try {
			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
			//1 浏览器发送服务器--表单提交
			// * value : String[]
			// * toType : Date
			if (toType == java.util.Date.class) {
				// 1.1 强转,获得数据
				String[] paramValues = (String[]) value;
				// 1.2 转成时间,返回 , 默认使用第一个
				return dateFormat.parse(paramValues[0]);
			}
			//2 服务器发送浏览器--标签回显
			// * value : 服务器已经转换好的数据 Date
			// * toType : 需要类型 String
			if(toType == String.class){
				// 获得时间数据
				java.util.Date date = (java.util.Date)value;
				// 格式化
				return dateFormat.format(date);
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		//执行其他
		return null;
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值