Struts2自动类型转换

struts2 自动类型转换,分为两种,局部类型转换和全局类型转换。
局部的配置如下:
(1)编写类型转换器
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class DateTypeConversion extends DefaultTypeConverter {

	@Override
	public Object convertValue(Map<String, Object> context, Object value,Class toType) {
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
		try{
			if(toType==Date.class){
				String [] dates = (String[]) value;
				return dateFormat.parse(dates[0]);
			}else if(toType==String.class){
				Date date = (Date) value;
				return dateFormat.format(date);
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}

	
}


(2)将类型转换器与action进行关联
编写properties文件,文件名称必须是ActionClassName-conversion.properties。
eg:这里的Action名称是Test2Action,则对应的properties名称是:Test2Action-conversion.properties
配置文件内容是:
属性名称=类型转换器全类名
eg:
person.birthday = com.xss.type.conversion.DateTypeConversion

注意,此时的properties文件必须放在Action相同的目录下
eg:



全局类型转换:
(1)编写类型转换器,代码与局部类型转换一样。
(2)将类型转换器与数据类型关联。
编写properties文件,文件名为xwork-conversion.properties。
properties配置内容是:
数据类型=类型转换器全类名
eg:
java.util.Date = com.xss.type.conversion.DateTypeConversion

注意此时,properties文件必须放在classes文件下,
eg:



附加代码
import java.util.Date;

public class Person {

	private String name;
	private Date birthday;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	
	public String toString(){
		return name +" : "+birthday;
	}
	
}


猜你喜欢

转载自catinthewater.iteye.com/blog/2310001