Spring 配置文件 <bean name="/employee" class="com.petclinic.struts.action.EmployeeAction">
<property name="employeeService">
<ref bean="employeeService" />
</property>
</bean>
Struts配置文件
<action parameter="method"  path="/employee" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="list" path="/pages/sysManage/employee.jsp" />
</action>
Action
public ActionForward listEmployee(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
List listEmployee=employeeService.findAllEmployee();
System.out.println("listEmployee---->"+listEmployee);
request.setAttribute("listEmployee", listEmployee);
return mapping.findForward("list");
}

jsp页面部分

<html:link action="employee.do?method=listEmployee " target="mainFrame" styleClass="left-font03" onclick="list('5');">系统管理</html:link>
点击连接的时候就出异常
javax.servlet.ServletException: java.lang.NoSuchMethodException: Action[/employee] does not contain specified method (check logs)
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)希望有人帮忙解决下这个问题。

解决方案 »

  1.   

    public ActionForward listEmployee(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response){
            List listEmployee=employeeService.findAllEmployee();
            System.out.println("listEmployee---->"+listEmployee);
            request.setAttribute("listEmployee", listEmployee);    
            return mapping.findForward("list");
        }这段代码是
    com.petclinic.struts.action.EmployeeAction这个类里面的吗?不要看清楚有没有哪里写错了,照理来说你的代码没有问题
      

  2.   

    public class EmployeeAction extends BaseAction 是写在这个类里面的 那个BaseAction是继承DispatcherAction的。public class BaseAction extends DispatchAction {
    private static ApplicationContext ctx = null;
    public Object getBean(String name) { 
            if (ctx == null) { 
                ctx = WebApplicationContextUtils.getRequiredWebApplicationContext( 
                    servlet.getServletContext()); 
            } 
            return ctx.getBean(name); 
        } 
    }
      

  3.   

    你这个struts配置里面貌似没有form,应该无法用代理来实现调用类里的方法吧,可以看下ajax,dwr,jqery的原理,不知道记错没,呵呵
      

  4.   

    这个还真不清楚了,我这个是直接连接,然后查出数据显示到页面。我觉得不用加form吧。
      

  5.   


    <html:link action="employee.do?method=listEmployee " target="mainFrame" styleClass="left-font03" onclick="list('5');">系统管理</html:link>链接中参数action值后面method是参数名,listEmployee是你要传的参数,struts中的request向servlet传值,框架会自动帮你把值封装到form里面,而你要调用action里面的方法,struts用的是代理模式,配置文件中的参数是parameter,所以配置的form里面要有String类型的参数parameter的值的get和set方法,这样struts的代理类才可以通过反射机制来调用你要调用的方法。
    学东西不能太快,如果你自己写过经典MVC小型框架而不是直接用struts框架的话应该明白。
    PS:表达能力不太好,将就看下吧。
      

  6.   


    不一定要有actionform啊老大,这个是可选的,问题不在这里
      

  7.   

    是可以不要,但是他要往action里面传值还是需要actionform封装吧
      

  8.   

    actionform自动封装功能无非就是使用反射获取request里面的参数值,
    要往action里面传什么值?method吗?
      

  9.   

    java.lang.NoSuchMethodException  这个异常是指你的action里面没有这个方法,说明已经找到了action  但是没有找到方法,所以有2个情况,一个是你提交到的不是这个action ,查查配置文件,有没有一样的path
    第2种情况,你的action里面没有这个方法
      

  10.   

    我的Action是继承的DispatcherAction,当中也有相应的的方法listEmployee。
    Struts配置文件中没有path相同的。
    action值后面method不就是Sturts配置文件中parameter的值吗?就是parameter=method
    页面上使用的提交方式,action是应该没有写错的啊。但就是找不到原因。
      

  11.   

    现在根本就进入不了Action中。
    谁能给我个比较明确的struts Spring hibernate 框架的各种配置步骤。
    以及使用该框架应该注意些什么。
      

  12.   

    把web.xml贴出来 应该没写代理或者 过滤器 
      

  13.   

    一般SSH框架整合步骤:添加spring和hibernate有顺序问题
    先加spring修改web.xml配置的是上下文参数
    <context-param>
       <param-name>contextConfigLocation</param-name>名称是固定的,一定要记下来
       <param-value>classpath*:applicationContext*.xml</param-value>加载classes下面的所有以applicationContext开头的xml文件
    </context-param>加载上下文参数的监听器
    <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>两个过滤器,转码(CharacterEncodingFilter)和延迟加载(OpenSessionInViewFilter)
    修改struts-config.xml
    使用Spring的请求处理器
    <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
    修改applicationContext.xml,将Action交由spring管理
    其中bean的一定要使用name属性进行声明,因为id不能接受/这个符号
    name属性的值和struts-config.xml中action配置的path路径一致。<bean name="/student"
    class="org.totong.struts.action.StudentAction">
    <property name="studentService" ref="studentService"></property>
    </bean>

      

  14.   

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener> <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter>
      
      

  15.   

    终于找到了解决办法。原来是自己的页面路径不对。我在.do前添加了${path}就能正常跳转了。
      

  16.   

    我估计是
    你的JSP页面是存在于另一个目录下
    当你处理完一个请求后跳转到当前页面
    然后再请求action时路径变成了HTTP://localhost:8080/XXX/文件所在目录名/employee.do?method=listEmployee
    而正确的路径HTTP://localhost:8080/XXX/文件所在目录名/employee.do?method=listEmployee
    无红色部分
      

  17.   

    原因是我没有在action前面加项目名。我的struts配置中有多个action,/add_employee、/edit_employee 都是来自EmployeeAction继承自diapatchAction,
    全部交由Spring控制,这些都必须加项目名才能正常跳转。
    如果是直接用/employee下的跳转就不需要加项目名。
    这个路径问题还真有点搞不明白。
      

  18.   

    还是来不起  我的eclipse里运行可以跑的起 打成war包放在 tomcat里就不行了 求解