structs2There is no Action mapped for namespace / and action name..问题
"There is no Action mapped for namespace / and action name XXX" 估计是struts2入门都会遇到的问题
简单的总结一下今天的问题:
1.把struts.xml文件放在了WEB-INF文件夹里了,这是Struts1.x的思维定势,尽管资料上明确地指明要放在WEB-INF/classes文件里(也就是myeclipse的src文件下)
2.namespace属性的设置问题:这个属性在pakage和<s:form>中都有,如果是在struts.xml文件中的pakage的属性namespace上设置了,那么在写<s:form>的action时就要写成:namespace的属性+action或者namespace的属性/../action的名称(不需加后缀),介于namespace和action名之间可以有其他路径。举个例子:若你的struts.xml的文件如下配置,请留意namespace属性
<?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="struts2" namespace="/check" extends="struts-default"> <action name="login" > <result name="failure">/erro.jsp</result> <result name="success">/index.jsp</result> </action> </package>
?? 然后是登陆界面的<s:form>
?? ?<s:form action="/check/login" method="POST" >
<s:textfield name="username" label="用户名"></s:textfield> <s:textfield name="pwd" label="密码"></s:textfield> <s:submit value="登录"></s:submit> </s:form>
?? ?<s:form>的namespace属性可写可不写,试了试乱写都没报错呢....因为配置了pakage的namespace的属性,<s:form>的action就可以配置为:action="check/login"或者action="check/a/login"等,struts在寻找action时会在namespace下的文件夹逐个找?直到找到为止。??
?
综上所述:注意namespace的用法,不配置的话,action的路径怎么写都可以,但最后的斜干后必须是动作名,如果配置了的话<s:form>的action属性就必须是namespace属性+中间可以加多级的路径也可以不加+动作名.
?
?
?