Struts2 OGNL 自定义类型转换 转换出错
Struts2 OGNL 自定义类型转换 输入的字符串转换Date类型出错 页面输出转换的值为:ognl.NoConversionPossible 控制台输出的转换为:Date:Fri Nov 11 00:00:00 CST 2011
下面为:struts.xml 主要代码
<package name="default" namespace="/" extends="struts-default">
<!-- 自定义拦截器 -->
<!-- interceptor元素定义拦截器 interceptor-ref元素来使用拦截器 -->
<!-- 定义拦截器 -->
<interceptors>
<interceptor name="myAuthorization" class="action.MyTimerInterceptor"></interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="myAuthorization"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
<default-action-ref name="hello" />
<!-- 日期类型转换Action -->
<action name="DateAction" class="action.DateAction">
<result name="success">/Date.jsp</result>
</action>
下面为自定义转换类
public class DateConverter extends StrutsTypeConverter {
//支持转换的多种日期格式,可增加时间格式
private final DateFormat[] df={
new SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("yyyy年MM月dd日"),
new SimpleDateFormat("yyyy/MM/dd"),
new SimpleDateFormat("yyyyMMdd")
};
@Override
/**
* 将指定格式字符串转换为日期类型
*/
public Object convertFromString(Map context, String[] values, Class toType) {
// TODO Auto-generated method stub
String dateStr=values[0];//获取日期字符串
for(int i=0;i<df.length;i++){//遍历日期支持格式,进行转换
try{
System.out.println(df[i].parse(dateStr));
return df[i].parse(dateStr);
}catch(Exception e){
continue;
}
}
//如果遍历完毕后仍没有转换成功,表明出现转换异常
throw new TypeConversionException();
}
@Override
/**
* 将日期转换为指定格式字符串
*/
public String convertToString(Map context, Object object) {
// TODO Auto-generated method stub
Date dates=(Date) object;
//输出的格式是 yyyy-MM-dd 随自己设置
return new SimpleDateFormat("yyyy-MM-dd").format(dates);
}
}
求各位大大解惑!