Cannot retrieve mapping for action

想必用过Struts的朋友都遇到过这个异常吧!没遇到的也可能,只能说你很强或运气不错。

我遇到该异常的解释是我不强,用Struts不是很多,或者说根本不熟练,对一些知识了解得并不深,仅仅皮毛而已,所以这个异常困扰了我一天的时间。言归正传。

从字面上翻译就是“不能找到映射action”,当出现这个异常的时候,肯定是在请求某个action,而根据给定的路径却没找到,所以页面啪嚓抛出一个异常,满满一页。

此时你首先要检查的是请求的路径是否书写正确,与struts-config.xml中配置的路径仔细的核对,发现完全正确。真的完全吻合么?恐怕只有后面的“/XXAction”完全相同吧!所谓的完全正确是指由根目录到struts配置的path完全一致,如“http://localhost:8080/web/data/login.do”, 你的struts配置文件中配置的可能是path="/data/login",那么你如此访问肯定是正确的,只怕你忘记了data这个渺小的目录的存 在,遗忘请补齐。这种情况的出现往往是做项目的时候,小组都分区分模块,每个人都有自己定义的目录,在web.xml中配置struts,如:

<servlet>
<servlet-name>strutsAction</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<init-param>
<param-name>config/prms/data</param-name>
<param-value>/WEB-INF/prms/struts-config-data.xml</param-value>
</init-param>
</servlet>
那么在你访问struts资源的时候千万不要忘记上面配置的路径。

下面说说我遇到这个异常的原因吧!我直接访问服务器上的资源,即xx.jsp,如果路径写正确,这是没问题的,但是页面上却抛出了这个异常,仔细的 检查发现,页面form的action写着“/login.do”,页面所在路径与“/login.do”组合后的路径并不是action配置的路径,所 以根本就找不到action资源,只能抛出异常。

前辈们都建议不要直接访问服务器固定资源,如果你偏要访问那个jsp也行,使用Struts提供的ForwardAction即可,既不会出现上面的异常,又没有直接访问服务器资源,两全其美。

posted on 2011-04-16 02:23  IceWee  阅读(4370)  评论(0编辑  收藏  举报

导航