原来用的是struts1.3.8版本,重新下载了struts.3.10,将原来1.3.8的JAR包替换掉,不好用,然后将源代码关联上,然后重新生成LoginAction的execute方法,改为login方法,如下:
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
System.out.println("--------------");
//取出表单,我们先打通练习,我们简单验证
EmployeeForm employeeForm = (EmployeeForm)form;

System.out.println("id=" + employeeForm.getId() + "  pwd=" + employeeForm.getPwd());

if("123".equals(employeeForm.getPwd()))
{
return mapping.findForward("ok");
}
else
{
return mapping.findForward("err");
}
}
然后程序就通过了,其他什么也没改,真不明白怎么回事

解决方案 »

  1.   

    jar 包冲突的问题。
    比如 a 包调用了 b 包的 c 方法,但是先前版本的 b 包是没 c 方法的。
      

  2.   

    我看了一下,在生成execute()方法时,因为使用的myeclipse,有自动提示功能,敲一个e然后自动带出以e打头的方法,我看了一下有两个,在没有引入源文件时,两个都是execute(ActionMapping arg0, ActionForm arg1,ServletRequest arg2, ServletResponse arg3),我自动用了第一个,如果引入源文件,变成一个是execute(ActionMapping arg0, ActionForm arg1,ServletRequest arg2, ServletResponse arg3),一个是execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response),这时我尝试在用第一个,就是参数是arg格式的,出现同样的错误。写到这我突然明白过来了,我靠啊,是方法错了,显示的两个execute()确实是不同的方法,参数不一样的,第一个是ServletRequest,等等,第二个是HttpServletRequest必须要仔细啊,这么个问题我弄了四五天,郁闷死了,谢谢大家