我使用hibernate自动生成的dao和entity
从from提交的数据也在action中得到
调用dao的save插入数据,可是出现问题BeanUtils.populate
日期我用
方式1 import java.sql.Date;
        student.setBirthday(Date.valueOf(birthday)); 
方式2 import java.util.Date;
       SimpleDateFormat sdf=new SimpleDateFormat ("yyyy-MM-dd"); 
都不行,
查了一下enctype="multipart/form-data"就得不到数据了,还要用上传组件,
也不知道问题处在哪?一直没遇到过,
有没有可能是hibernate或sql server配置问题,
<generator class="identity" />数据库id也是自增的
请各位帮助解决。

解决方案 »

  1.   

    dao:public void save(Students transientInstance) {
    log.debug("saving Students instance");
    try {
    getSession().save(transientInstance);
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    }action:public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    // TODO Auto-generated method stub
    ActionForward forward = mapping.findForward("add");
    StudentsDAO studentDao = new StudentsDAO();

    String name = request.getParameter("name");
    String sex = request.getParameter("sex");
    String birth = request.getParameter("birth");
    int age = Integer.parseInt(request.getParameter("age"));
    String address = request.getParameter("address");
    String email = request.getParameter("email");
    int tel = Integer.parseInt(request.getParameter("tel"));

    SimpleDateFormat sdf=new SimpleDateFormat ("yyyy-MM-dd");
    Date Datebirth = null;
    try {
    Datebirth = sdf.parse(birth);
    } catch (ParseException e) {
    e.printStackTrace();
    } //System.out.println("address.........a.......:"+address);
    Students student = new Students();
    student.setAge(age);
    student.setAddress(address);
    student.setEmail(email);
    student.setBirth(Datebirth);
    student.setName(name);
    student.setTel(tel);
    student.setSex(sex);
    //System.out.println("address.........b.......:"+student.getAddress());
    studentDao.save(student);

    //System.out.println("address.........c.......:"+address);
    return forward;
    }
      

  2.   

    异常堆栈:exception javax.servlet.ServletException: BeanUtils.populate
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
    org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.IllegalArgumentException: argument type mismatch
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:585)
    org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:1789)
    org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.java:1684)
    org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:1713)
    org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
    org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
    org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      

  3.   

    页面用的struts标签吧 看看formBean 中的类型与页面上的一致不一致
      

  4.   

    建议先用一种new Date()试一下,hibernate里date和timestamp是不一样的
      

  5.   

    页面用的struts标签吧 看看formBean 中的类型与页面上的一致不一致
      

  6.   

    我也遇到过这种问题,先用new date()试一下!没用过SQLSERVER不知道它的默认格式是什么样的!
      

  7.   

    new date()也不行,怎么办
      

  8.   

    保存成功了,原来是保存后forward的原因,我想跳转到列表页面,怎么办<action-mappings >
        <action
          attribute="studentForm"
          name="studentForm"
          path="/student"
          scope="request"
          type="com.ldy.struts.action.StudentAction" >
    <forward name="list" path="/jsp/list.jsp" />
    <forward name="error" path="/jsp/error.jsp" />
    </action>
        <action 
         path="/add" 
         type="com.ldy.struts.action.AddAction">
          <forward name="add" path="/student.do" />
        </action>
      </action-mappings>
      

  9.   

    <action-mappings >
        <action
          attribute="studentForm"
          name="studentForm"
          path="/student"
          scope="request"
          type="com.ldy.struts.action.StudentAction" >
    <forward name="list" path="/jsp/list.jsp" />
    <forward name="error" path="/jsp/error.jsp" />
    </action>
        <action 
         path="/add" 
         type="com.ldy.struts.action.AddAction">
          <forward name="add" path="/student.do" />
        </action>
      </action-mappings>
      

  10.   

    怎么从一个action通过struts-config.xml,forward到另一个action,继承的action
      

  11.   

      <forward
            name="success"
            path="/WEB-INF/success.jsp"
            contextRelative="true" />
          <forward
            name="error"
            path="/error.jsp"
            redirect="true" />
      

  12.   

    你这是在一个action中,dispatchaction
    我继承是action