struts2 类型转换失败
在 struts2 中,被请求的类继承了 ActionSupport 类以后,有一个内置的 input 属性,当类型转换失败的时候会把页面转到result 中 input 所对应的页面.在这里有个问题,在后台中 我定义了一个 long 和 date 类型,在页面上输入 值以后,我想保存这些值,但是每次都是将页面转到了 input 属性对应的页面,我知道是 类型转换出了错误,但是怎么能消除或改正这个错误?在那儿能将页面上的 输入的字符串类型转成 long 和 date 呢?请各位高手指点一下... --------------------编程问答-------------------- 有哪位大侠指点一下吗? 很着急的... --------------------编程问答-------------------- 星期天怎么没有回复啊? 只好睡了... --------------------编程问答-------------------- 注意,struts2的类型转换器是双向的,与struts1有所不同。第一次会转换,当第二次转换是类型已经变了如果你还强制转换成原来的类型会出现ClassCastExcep,lz可自行debug验证
贴一个例子,供参考:
package com.lxit.conversion;--------------------编程问答-------------------- 你先全部是sting,在后台打印一下,然后你自己用代码转换,看是否能转换成功 --------------------编程问答-------------------- 谢谢...
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Map;
import org.apache.log4j.Logger;
import ognl.DefaultTypeConverter;
public class PersonActionConversion extends DefaultTypeConverter {
/**
* @author tdw
*/
public Object convertValue(Map context, Object value, Class toType) {
Logger log = Logger.getLogger(PersonActionConversion.class);
java.util.Date date = null;
if(toType == java.util.Date.class){
//第二次toType类型已经变了,因此不能再次转换成相同的类型,应将value放到if里面
String data[] = (String[])value;
SimpleDateFormat sdf = null;
String[] formate={"yyyy/MM/dd","yyyy-MM-dd","yyyy年MM月dd日"};
if(data[0].indexOf("/") != -1)
sdf = new SimpleDateFormat(formate[0]);
else if(data[0].indexOf("-") != -1)
sdf = new SimpleDateFormat(formate[1]);
else if(data[0].indexOf("月") != -1)
sdf = new SimpleDateFormat(formate[2]);
else
log.debug("没找的匹配日期格式。");
try {
date = sdf.parse(data[0]);
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException("自定义类型转换出错误了。");
}
}else{
return value.toString();
}
return date;
}
}
补充:Java , Web 开发