替No configuration found for the specified action疯狂了4个小时

为No configuration found for the specified action疯狂了4个小时

警告: No configuration found for the specified action: 'login' in namespace: '/jsp'. Form action defaulting to 'action' attribute's literal value.

因为这个错误我在 struts.xml 和 jsp页面之间修改了4个小时,不过最后我搞定他了。
虽然我还不明白原理是为什么,但并不妨碍我把这个可恶问题的解决过程同大家分享。

1.先把struts.xml 写成最简单的格式。


 <package name="default" extends="struts-default">

 


  <action name="login"  class="com.action.LoginAction">
   <result name="success"> /jsp/welcome.jsp </result>
  </action>


 </package>


-------------------

 

 

2.其次把  login.jsp 也改成最简单的格式。

 

  <body>


   <s:form action="login" method="post">
       <s:textfield  name="userName"  label= "用户名"> </s:textfield>
       <s:textfield  name="password"  label= "密码">    </s:textfield>
       <s:submit/>

   </s:form>


  </body>

现在我们可以重启服务了,应该不会再出现问题了。

可是!我如果必须加上 namespace 那又该如何做呢?

--------------------

3.在struts.xml  中加入 namespace="/xxx"  为什么要加3个X 呢 ?那是真的恨呀......

那么要正确的运行你必须在 login.jsp 里写

 

<s:form action="login" method="post" namespace="/xxx">

 

重启-运行;应该不会再有问题的。

但是如果你写成      <s:form action="/xxx/login.action" method="post"> 

依然会出错的,这点我就不明白了哈。

-------------------

4.最后我们再来看一下 这段错误

 

警告: No configuration found for the specified action: 'login' in namespace: '/jsp'. Form action defaulting to 'action' attribute's literal value.

 

当我把 login.jsp 中的 action 值的变化为啥时 'login' 也就变化成啥

当我改变 login.jsp 的目录时, '/jsp'  就会改变  比如  WebRoot/jsp/xjsp/login.jsp 

那么就是 '/xjsp/jsp'.Form action defaulting ....... 

----------------

 

我还不知道如何能能代码像其它人样子贴出来   就像是在编辑器中的效果一样咯。(有谁知道的留言帮我一下哦)

所以看起来很不方便,希望能给痛苦中的人们一些用处哦哦

 

 

 

1 楼 l101y1982j 2010-04-27  
我来捧个人场
2 楼 yeyeok 2010-09-28  
遇到同样的问题,还没搞定..
3 楼 jpsb 2010-11-05  
1.如果struts.xml中没有定义namespace
  <package name="default" extends="struts-default">
  则jsp中写为 <s:form action="login"> (不需要写namespace属性)
  此时控制台不会有警告信息。

2.如果struts.xml 定义了namespace
  <package name="default" extends="struts-default" namespace="/kongjian">
  则jsp中要这样写 <s:form action="login" namespace="/kongjian">
  此时控制台也不会有警告信息。

另外,我发现如果使用了namespace,页面中没有使用namespace属性<s:form name="login">...</s:form>的代码即使被注释掉,也仍然会有警告信息
 
4 楼 lpxtx001 2011-03-09  
根据3楼的说法,我解决了这种问题,呵呵,谢谢各位老大
5 楼 HarryAlex 2011-04-04  
谢谢,学习了。