struts2中用复合模式接受参数与局部类转换器是不冲突啊?
这瓜保熟么 2012-02-10 02:47:25 package cn.itcast.action;
import java.util.Date;
public class HelloWorldAction {
private Date birthday;
import java.util.Date;
public class Person {
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
System.out.println(birthday);
this.birthday = birthday;
}}
public String addUI(){
return "success";
}
public String execute() throws Exception{
return "success";
}
}
HelloWorldAction-conversion.properties //此属性文件要和action放在同一包下 这个文件时注册转换器
birthday=cn.itcast.type.converter.DateTypeConverter
DateTypeConverter.java
package cn.itcast.type.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
public class DateTypeConverter extends DefaultTypeConverter { //继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter这个类
@Override //重写convertValue这个方法
public Object convertValue(Map<String, Object> context, Object value, Class toType) { //这里的value即需要转换之前的值 toType属性是需要转换成的类型
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try {
if(toType == Date.class){//当字符串向Date类型转换时
String[] params = (String[]) value;// request.getParameterValues() //因为struts2使用的是request.getParameterValues() 这个方法获取参数,所以要String[]转换
return dateFormat.parse(params[0]);
}else if(toType == String.class){//当Date转换成字符串时
Date date = (Date) value;
return dateFormat.format(date);
}
} catch (ParseException e) {}
return null;
}
}
用http://localhost:8000/struts2/cao/time_d.action?person.birthday=20090909访问时候,报错:还是转换不了的问题