日期:2014-05-20  浏览次数:20823 次

struts中的actionform问题
在actionform中所有的jsp页面元素都能被自动接收并转换为相对应的类型,唯独一个漏网之鱼,就是date对象,需要自己手动进行转换,那么是struts框架故意做成这样还是一个漏洞?如果是故意做成这样,意义何在?

------解决方案--------------------
date 要手动封装到bean里
------解决方案--------------------
要手动封装下
------解决方案--------------------
一:字面都会转化成字符串形式,如果20000-10-10 这个是否符合形式呢?有可能出现异常。出现异常是否是工程所需呢?
二:只是一个字面转化就整的这么麻烦,索性还不如给客户自定义。
------解决方案--------------------
package com.zzq.oa.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.beanutils.Converter;

public class UtilDateConverter implements Converter {

private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

public Object convert(Class type, Object value) {
if (value == null) {
return value;
}
if (value instanceof Date) {
return value;
}
if (value instanceof String) {
try {
return format.parse((String)value);
} catch (ParseException ignore) {
}
}
return null;
}

}


package com.zzq.oa.util;

import java.util.Date;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.commons.beanutils.ConvertUtils;


public class InitServlet extends HttpServlet {

@Override
public void init() throws ServletException {

//注册日期类型的转换器
ConvertUtils.register(new UtilDateConverter(), Date.class);

}

}