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

解决方案 »

  1.   

    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); }}