There is no Action mapped for namespace / and action name getEmployee

在对Spring3和对Struts2进行集成时,写了一个简单的action进行测试。结果服务器老报“There is no Action mapped for namespace / and action name getEmployee”异常,页面出现404错误。

 

action的代码清单如下:

package com.ssh.action;

 

public class EmployeeAction extends BaseAction{

    public String getEmployee(){
        System.out.println("--aaaaaaaaaaaaaaaaaaaaaa----");
        return "success";
    }
}

 

struts.xml的配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
 <package name="employee" namespace="/" extends="struts-default">
   
  <action name="getEmployee" class="com.ssh.action.EmployeeAction" method="getEmployee">
   <result>/index.html</result>
  </action>

 </package>

</struts>

 

刚开始还以为是action的配置错误。而且就这么简单的配置,也不可能会配置错啊,找了好久,也没有发现那里不对。而且也看了web.xml的配置,也没有错。整郁闷之时,在网上搜了下,有人说是struts.xml文件的位置放错了,说是要直接放在src下面。然后我看了下我工程中struts.xml文件的位置,发现它是在src下面,只不过处于src目录的config子目录(本意是专门用来放所有配置文件的)中。莫非是因为这个引起来的?然后我直接把struts.xml文件移到src目录下面,重启服务器。然后输入地址,访问成功,控制台输出了字符串--aaaaaaaaaaaaaaaaaaaaaa----,而且也调到了index.html页面。问题找到了!

 

通过此次测试和网友的经验,如果出现类似“There is no Action mapped for namespace / and action name getEmployee”的异常时,应该通过以下几种方式进行排除:

1:首先还是检查struts.xml文件的配置,看看对应的action配置是否正确;

2:如果action的配置没有问题,则看看struts.xml的位置是否正确(struts2中此文件默认只能直接放在src目录中,也就是编译后的classes目录中;而不能将struts.xml放在他们的子目录中,否则struts会加载不到)

3:确定名称是 struts.xml。

 

 

posted @ 2011-03-15 18:17  hibernate3例子  阅读(262)  评论(0编辑  收藏  举报