我使用SSH框架·在框架中创建了一个父类BaseAction(继承了DispatchAction)·其他的*Action都继承他(BaseAction)。
我有个userAction继承BaseAction··在userAction中有3个方法··添加,修改,查询,为什么在执行方法的时候没有更新到数据库中去··我只有把其他2个方法给注释了才可以·请问怎么回事··求解·

解决方案 »

  1.   

    BaseAction代码===============================
    package com.lstc.gm.hi.web.action;
    import org.apache.struts.actions.DispatchAction;import com.lstc.gm.hi.service.All_Service;
    public class BaseAction extends DispatchAction {

    All_Service all_service; public All_Service getAll_service() {
    return all_service;
    } public void setAll_service(All_Service all_service) {
    this.all_service = all_service;
    }
    }
    userAction代码================================
    package com.lstc.gm.hi.web.action;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Iterator;
    import java.util.List;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessages;
    import org.apache.struts.actions.DispatchAction;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;import com.lstc.gm.hi.web.form.UserForm;import com.lstc.gm.hi.entity.GmCompetence;
    import com.lstc.gm.hi.entity.GmUser;
    public class UserAction extends BaseAction{
    @Transactional(propagation=Propagation.REQUIRED)
    public ActionForward Login_Action(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
    {
    UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
    String password= userForm.getGmusers().getPassword();
    String account =userForm.getGmusers().getAccount();
    List  gmuserList = this.getAll_service().getGmuser_service().findByAccount(account);
    if(gmuserList.size() >0)
    {
    Iterator it = gmuserList.iterator();
    while(it.hasNext())
    {
    GmUser gmuser = (GmUser)it.next();
    if(gmuser.getAccount() !=null && gmuser.getPassword().equals(password))
    {
    request.getSession(true).setAttribute("GmUser",gmuser);
    return mapping.findForward("index");
    }
    else
    {
    message(request, response);
    }
    }
    }
    else
    {
    message(request, response);
    }
    return null;
    }
    public ActionForward Add_Action(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
    {
    UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
    String account = userForm.getAccount();

    GmCompetence gmcompetence = new GmCompetence();
    GmUser gmuser = new GmUser();
    Integer id =userForm.getGmusers().getCompetenceid();
    gmcompetence =this.getAll_service().getGmcompetence_service().findById(new Integer(id));
    gmuser.setAccount(userForm.getGmusers().getAccount());
    gmuser.setAddress(userForm.getGmusers().getAddress());
    gmuser.setCompetenceid(userForm.getGmusers().getCompetenceid());
    gmuser.setGmCompetence(gmcompetence);
    gmuser.setName(userForm.getGmusers().getName());
    gmuser.setPassword(userForm.getGmusers().getPassword());
    gmuser.setPhone(userForm.getGmusers().getPhone());
    gmuser.setQq(userForm.getGmusers().getQq());
    gmuser.setTel(userForm.getGmusers().getTel());

    this.getAll_service().getGmuser_service().Save_gmuser(gmuser);
         int i= gmuser.getUid();
         System.out.println(i);
        if(i>0)
    {
    System.out.println("成功!");
    }
    else
    {
    System.out.println("失败!");
    }
    return null;
    }
    public ActionForward Update_Action(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
    {
    UserForm userForm = (UserForm) form;
    int i=0;
    Integer  uid = Integer.valueOf(request.getParameter("Uid"));
    String password = userForm.getThepaw();
    GmUser gmuser = new GmUser();

    gmuser = this.all_service.getGmuser_service().get_gmuser_byID(uid);
    gmuser.setPassword(password);
    this.getAll_service().getGmuser_service().update_GmUser(gmuser);
    System.out.println(password);
    System.out.println(gmuser.getName());
    System.out.println(gmuser.getPassword());
    System.out.println(gmuser.getUid());
    if(uid>0)
    {
     this.getAll_service().getGmuser_service().update_password(gmuser);
    if(i>0)
    {
    System.out.println("成功");
    }
    else
    {
    System.out.println("失败");
    }

    }
    System.out.println("成功");
    return null;
    }
    private void message(HttpServletRequest request,
    HttpServletResponse response) {
    String message;
    message="对不起!没有该用户";
    String forward="error.jsp?msg="+message;
    try {
    request.getRequestDispatcher(forward).forward(request,response);
    } catch (ServletException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    有码有真相
      

  2.   

    你的请求是否对?
    配置是否对?
    配置中添加: parameter="method" 
    表单请求为:xxxx.do?method=Add_Action
    这样才能请求你的方法。
      

  3.   

    转发的action的时候需要有一个参数来确定究竟执行哪个方法,不知道你有没有传这个参数,或者是更改参数的值,
    比如参数名为:operate
    要执行添加要传一个operate=Add_Action
    要执行更新:operate=Update_Action
    要执行登录:operate=Login_Action
    operate传的是要执行哪个方法,好好检查检查。
      

  4.   

    JSP提交页面把你三个操作的参数作为表单隐藏域传给 DispatchAction
    XML里要配置的这个parameter 参数懒得打字了http://hi.baidu.com/javahua/blog/item/57890dce796f8b38b700c845.html很清楚。
      

  5.   

    配置没问题 你那样写的,表单请求也是那样写的
    ··要是在userAction中只有Add_Action方法的话是可以的··数据库来的数据库也添加了·就是多一个方法的话··就有问题了
      

  6.   

    你用的是struts1吧,那你的action类继承的应该是MappingDispatchAction,因为如果你继承DispatchAcrion的话,你的Action类中只能有一个处理请求的方法,而继承MappingDispatchAction的话,你的Action类中可以有多个处理请求的方法具体的你可以去百度下DisparchAction和MappingDispatchAction的区别