Struts2 自定义全局转化器(Date与Timestamp)

采用struts2作为控制层时,客户端和服务器端对日期和时间戳的转换。在这里我们用全局转换器。

1.在源路径下建立xwork-conversion.properties文件,文件内容:

例子:

      java.util.Date=com...DateConverter(转化器类的路径)
      java.sql.Timestamp=com...TimestampConverter(转化器类的路径)

2.基于struts的自定义转换器继承StrutsTypeConverter,具体代码:

 

   日期型:

public class DateConverter extends StrutsTypeConverter {

	public Object convertFromString(Map map, String as[], Class class1) {
		return parseStringToDate(as[0]);
	}

	public String convertToString(Map map, Object obj) {
		String s = null;
		if (obj instanceof Date)
			s = dateTimeFormat.format(obj);
		return s;
	}

	private Date parseStringToDate(Object dateString) {
		Date date = null;
		if (dateString instanceof String)
			try {
				if(((String) dateString).trim().length()>10){
					date = dateTimeFormat.parse((String) dateString);// 日期解析不行,就用日期时间解析
				}else{
					date = dateFormat.parse((String) dateString);// 只是日期解析
				}
			} catch (ParseException p) {
				throw new XWorkException(
						"两种yyyy-MM-dd与yyyy-MM-dd HH:mm:ss都解析不了,时间参数为"
								+ dateString, p);
			}
		return date;
	}

	private static final SimpleDateFormat dateFormat = new SimpleDateFormat(
			"yyyy-MM-dd");

	private static final SimpleDateFormat dateTimeFormat = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss");

}

   时间戳

 

public class TimestampConverter extends StrutsTypeConverter {

    public Object convertFromString(Map map, String as[], Class class1) {
        return parseStringToTimestamp(as[0]);
    }

    public String convertToString(Map map, Object obj) {
        String s = null;
        if (obj instanceof Timestamp) {
            String s1 = obj.toString();
            s = s1.substring(0, 19);
        }
        return s;
    }

    private Timestamp parseStringToTimestamp(Object obj) {
        Timestamp timestamp = null;
        if (obj instanceof String)
            try {
                timestamp = Timestamp.valueOf((String) obj);
            }
            catch (Exception exception) {
                throw new XWorkException("Could not parse Timestamp", exception);
            }
        return timestamp;
    }
}

 

这样就实现了自定义的全局转换器。主要是重写convertFromString和convertToString这两方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值