Struts2兼容日期类型转换器(yyyy-MM-dd 或 yyyy/MM/dd 或 yyyyMMdd)

我想对自己说:既然已经开始了,那就安安静静地善终叭。

转载出处:动力节点 - SSH从入门到精通

package converter;

import java.util.Date;
import java.text.SimpleDateFormat;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.conversion.TypeConversionException;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
import com.sun.org.apache.xalan.internal.xsltc.compiler.Pattern;

public class MyDateConverter extends DefaultTypeConverter {

	@SuppressWarnings("unchecked")
	@Override // value:目标转换值;toType:目标转换类型
	public Object convertValue(Object value, Class toType) {
		SimpleDateFormat sdf = null; // 创建空的简单日期格式
		try {
			if (Date.class == toType) { // 前端页面到服务器端的数据转换
				String dateStr = ((String[]) value)[0];
				sdf = getSimpleDateFormat(dateStr); // 调用自定义简单日期格式转换函数
				ActionContext.getContext().getSession().put("sdf", sdf); // 将返回的日期格式存入Session会话
				return sdf.parse(dateStr); // 返回日期格式的解析结果
			} else if (String.class == toType) { // 服务器端到前端页面的数据转换
				Date date = (Date)value;
				// 从Session会话中获取存储的日期格式
				sdf = (SimpleDateFormat)ActionContext.getContext().getSession().get("sdf");
				return sdf.format(date);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return super.convertValue(value, toType); // 返回最终的日期格式转换结果
	}

	/**
	 * 根据传入的参数生成指定的日期格式
	 * @param source
	 * @return
	 */
	private SimpleDateFormat getSimpleDateFormat(String source) {
		SimpleDateFormat sdf = null;
		if (Pattern.matches("^\\d{4}-\\d{2}-\\d{2}$", source)) {
			sdf = new SimpleDateFormat("yyyy-MM-dd");
		} else if (Pattern.matches("^\\d{4}/\\d{2}/\\d{2}$", source)) {
			sdf = new SimpleDateFormat("yyyy/MM/dd");
		} else if (Pattern.matches("^\\d{4}\\d{2}\\d{2}$", source)) {
			sdf = new SimpleDateFormat("yyyyMMdd");
		} else {
			throw new TypeConversionException(); 
		}
		return sdf;
	}
	
}

学习就像走路一样,走得久了身子自然暖和恬适,思考多了脑袋自然灵光。

普通人嘛,不扯什么锲而不舍,只求每天能从输入法反馈给自己的输入字数中看到持平或上涨的数据而心安!

今天也要努力输入❤!

猜你喜欢

转载自blog.csdn.net/qq_44965393/article/details/111879122
今日推荐