strtus2学习(7)自定义类型转换器

本文介绍如何在Struts框架中实现自定义类型转换器,以解决框架无法自动完成从字符串到引用类型转换的问题。通过示例展示了自定义Date转换器的具体实现,并配置其在模型中的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要知道为什么需要自定义的转换器?它能做什么?

struts不能自动完成 字符串 到 引用类型的转换,上一篇文章已经解释过了

配置类型转换器

  • 自定义类型转换器必须继承StrutsTypeConverter类或对这个接口的某一种实现做扩展。
public class DateConverter extends StrutsTypeConverter {
	private DateFormat dateFormate;

	public DateConverter() {
		System.out.println("DateConverter Constractor");
		dateFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	}

	// 字符串转为目标类型
	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		System.out.println("DateConverter convertFromString");
		if (toClass == Date.class) {
			if (values != null && values.length > 0) {
				String value = values[0];
				try {
					return dateFormate.parseObject(value);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return values;
	}

	// 由目标类型转换为字符串
	@Override
	public String convertToString(Map context, Object o) {
		System.out.println("DateConverter convertToString");
		if (o instanceof Date) {
			Date date = (Date) o;
			return dateFormate.format(date);
		}
		return null;
	}
}
  • 编写配置文件
基于字段配置:在字段所在的model(可能是Action,可能好似javaBean)的包下,新建一个ModelclassName-conversion.properties
在文件中输入键值对:fieldName=类名转换器的全类名

date=com.lig.strutsTest2.converters.DateConverter

以上是基于字段的配置方式;下面介绍基于类型的配置

创建Model类,和model-conversion.properties文件;文件目录如下


自定义model类只有一个Date类型的date属性和toString方法,配置文件和上面的配置文件相同;然后在Action中实现ModelDriven接口

public class ConversionAction extends ActionSupport implements ModelDriven<Customor> {

	private Customor model;

	public String execute() {
		System.out.println("model=" + model);
		return "success";
	}

	@Override
	public Customor getModel() {

		model = new Customor();
		return model;
	}

}

执行结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值