Struts2之自定义类型转换器

1.自定义进行局部类型转换器

        1、在action类同一个文件夹下创建:action类名-conbersion.properties 文件(文件名固定),同样需要在成员变量类的同文件夹下创建:类名-conbersion.properties(同样固定),此文件夹下写的是要转换类型的成员变量。

   类名-conbersion.properties文件中内容:要转换类型的成员变量=类型转换器的全类名

birthday = com.beans.DateConverter

        2、创建类型转换的类例:DateConvertter.java(此类可以创建在与成员变量类同一个文件夹下)

注:只要类型不匹配抛出类型异常就会返回input视图

public class DateConverter extends DefaultTypeConverter{
	//value:将要被转换的值
	//toType:要转换成为的目标类型
	//页面-->服务器: String[] -->Date
	//服务器-->页面: Date -->String
	@Override
	public Object convertValue(Object value, Class toType) {
		SimpleDateFormat  sdf = null;
			try {
				if(toType==Date.class) {//成立说明是由页面到服务器的转换
					String dateStr = ((String[])value)[0];
					sdf = getSimpleDateFormat(dateStr);  //返回格式
					ActionContext.getContext().getSession().put("sdf", sdf);
					return sdf.parse(dateStr);
				}else if(toType==String.class) { //成立说明是由服务器到页面的转换
					Date date = (Date)value;
					sdf=(SimpleDateFormat) ActionContext.getContext().getSession().get("sdf");
					return sdf.format(date);
				}
			}catch(ParseException e) {
				e.printStackTrace();
			}
		return super.convertValue(value, toType);
	}
	private SimpleDateFormat getSimpleDateFormat(String dateStr) {
		//匹配多种自定义类型
		SimpleDateFormat sdf = null;
		if(Pattern.matches("^\\d{4}/\\d{2}/\\d{2}$", dateStr)) {
			sdf = new SimpleDateFormat("yyyy/MM/dd");
		}else if(Pattern.matches("^\\d{4}-\\d{2}-\\d{2}$", dateStr)) {
			sdf = new SimpleDateFormat("yyyy-MM-dd");
		}else if(Pattern.matches("^\\d{4}\\d{2}\\d{2}$", dateStr)) {
			sdf = new SimpleDateFormat("yyyyMMdd");
		}else {
			throw new TypeConversionException();
		}
		return sdf;
	}
}

2.自定义全局类型转换器

      全局类型转换需在WEB_INF/classes文件夹下创建一个xwork--conbersion.properties文件,文件内容为:待转换的类型=类型转换器的全类名。例:java.util.Date=com.beans.DateConverter   其他的均与局部类型转换器一样。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RWTHeart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值