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访问时候,报错:还是转换不了的问题

...全文
563 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zrufeng 2013-04-08
  • 打赏
  • 举报
回复
楼主,这个类型转换的问题解决了吗?怎么解决的?今天也遇到了这种情况。

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧