struts2类型转换器使用

本文介绍了Struts2框架中的类型转换机制,包括基于OGNL的DefaultTypeConverter类及其简化方法convertValue。通过两个测试Demo展示了如何实现StrutsTypeConverter抽象类中的convertFromString和convertToString方法来完成自定义类型转换,并提供了全局及特定类应用类型转换器的配置方法。

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

Struts2的类型转换可以使用基于OGNL表达式的存在,在OGNL中,DefaultTypeConverter实现了ognl.TypeConverter接口,该类提供了一个简化的convertValue的方法。


xwork-core包中也同样有一个名为TypeConverter的接口,StrutsTypeConverter类是抽象类,继承DefaultTypeConverter,该抽象类定义了2个抽象方法:

converFromString,converToString


以下是2个测试Demo

package test1;

import com.opensymphony.xwork2.ActionSupport;

public class form1Action extends ActionSupport {
	private Point point;

	public Point getPoint() {
		return point;
	}

	public void setPoint(Point point) {
		this.point = point;
	}
	@Override
	public String execute() throws Exception {

		
		System.out.println(point);
		
		return super.execute();
	}
}


package test1;

public class Point {
	private double x;
	private double y;
	public double getX() {
		return x;
	}
	public void setX(double x) {
		this.x = x;
	}
	public double getY() {
		return y;
	}
	public void setY(double y) {
		this.y = y;
	}
	@Override
	public String toString() {
		return "Point [x=" + x + ", y=" + y + "]";
	}
	
}
package test1;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class pointConversion extends StrutsTypeConverter{

	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		// TODO Auto-generated method stub
		//获取传进来的values,注意是数组
		String str = values[0];
		String[] p = str.split(",");
		Point point = new Point();
		point.setX(Double.parseDouble(p[0]));
		point.setY(Double.parseDouble(p[0]));	
		return point;
	}

	@Override
	public String convertToString(Map context, Object o) {

		//Object o 就是需要我们处理后传出去的对象
		Point point = (Point)o;
		
		return point.toString();
		
	}

}

			
输入坐标:

自定义了类型转换器后,还必须进行配置

1.应用于全局范围的类型转化器,需要在classpath的根路劲下创建一个名为xwork-conversion.properties的属性文件,其内容为:转换类全名 = 类型转换器类全名 (java.util.Date = .......);


2.应用于特定类的类型转换器

要指定应用于特定类的类型转换器,需要在特定类的相同目录下创建一个名为ClassName-conversion.properties的属性文件,其内容为:特定类的属性名=类型转换器类全名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值