如果改Bbs.hbm.xml,Bbs.java的dt为java.util.Date则
java.lang.IllegalArgumentException: 
Cannot invoke com.test.spring.Bbs.setDt - argument type mismatch

解决方案 »

  1.   

    BeanUtils对date的支持不是很好,好象只支持java.util.Date很久 以前用过一次,虽然会报错,但是值已经都传递过去了java.lang.IllegalArgumentException: 
    Cannot invoke com.test.spring.Bbs.setDt - argument type mismatch
    应该跟BeanUtils无关吧
      

  2.   

    sgdb(神天月晓) ,THX!
       java.lang.IllegalArgumentException: 
    Cannot invoke com.test.spring.Bbs.setDt - argument type mismatch
    应该跟BeanUtils无关吧
     但这个异常是copyProperties抛出来的
      

  3.   

    BeanUtils好像不支持复杂类型的
      

  4.   

    知道了,日期格式必须为
    yyyy-mm-dd (斜杠/ 就会产生异常org.apache.commons.beanutils.ConversionException)而且不能为空,继续处理中.........
      

  5.   

    public void setDt(java.sql.Date dt)public void setDt(String dt)这2个不一样啊,当然会出错了
      

  6.   

    一个是Bean,一个是ActionForm
    当然不一样了
      

  7.   

    终于搞定,总结于下:
    1.ActionForm:
         String dt;
    2.Bbs.hbm.xml:
         java.sql.Date
    3.Bbs.java:
         java.sql.Date dt;
    4.ActionForm->Bean:
      放弃了原来那个BeanUtils.copyProperties(dst,src);  改用如下方法:
    /**
     *转换字符为java.sql.Date
     *@param str 字符型日期数据
     *@param format 格式化模式
     *@return  返回日期
     */
    public static java.sql.Date formatSqlDate(String str, String format) {
    Date date =null;
             try {
    DateFormat df = new SimpleDateFormat(format);
    date = (Date) df.parse(formatString(str).replaceAll("-", "/"));
    } catch (Exception e) {
    }
             if(date!=null){
       long t = date.getTime();
       return new java.sql.Date(t);
    }else
       return null;
    }/**
    *转换ActionForm为Bean
    *@param src 源form
    *@param dst 目标bean
    *@param field[] 要替换的日期字段列表
    *@return 返回转换后的bean
    */
    public static Object convertObjectForStringToSqlDate(Object src,Object dst,String field[]){
      String fieldName=",";
      for(int i=0;i<field.length;i++)
         fieldName+=field[i]+",";
        
      if (src == null) {
         dst = null;
      } else {
         PropertyDescriptor origDescriptors[] =PropertyUtils.getPropertyDescriptors(src);
         for (int i = 0; i < origDescriptors.length; i++) {
    String name = origDescriptors[i].getName();
    if (PropertyUtils.isWriteable(dst, name))
      try {
         String dateValue =(String)PropertyUtils.getSimpleProperty(src, name);
                  if ((","+name+",").indexOf(fieldName)>=0) 
    BeanUtils.setProperty(dst,name,formatSqlDate(dateValue,"yyyy/MM/dd"));
         else
    PropertyUtils.setSimpleProperty(dst,name,dateValue);
      } catch (Exception e) {
      }
          }
      }
      return dst;
    }欢迎改善意见!
      

  8.   

    晕,越搞越麻烦,要是字段不多的话还不如不要用BeanUtils之类
      

  9.   

    我记得我用 Digester 解析 XML 时 有个 注册转换器的 方法, 不知道 你这里有没有这种可能性?