[转]No configuration found for the specified action 原因及解决方案

转自

报错内容

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

引发原因

底层原因本人不是太清楚,但我理解的是,由于请求页面的namespace属性与struts.xml的namespace属性值不一致引起的,这种警告基本上不会影响系统的运行,但对于一个追求完善的人来说,不得不说,这并不是一道好的风景。所以,这里,提供一个小小的解决方案供朋友们参与。

由于引发这个警告的只是用于请求的jsp页面和struts.xml两个文件,为了让朋友们更好的理解,这里我将用于测试的代码复制出来,供大家参与。(请求页面:login.jsp  struts2配置文件:struts.xml)

(由于下面的jsp页面关联有其他文件,这里就不复制出来了,单独使用可能会有其他的错误。如果读者需要测试的话,可以自己写一个简单的登录页面)

引发警告的文件:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib prefix="s"  uri="/struts-tags"%>
 3 <%
 4 String path = request.getContextPath();
 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 6 %>
 7 
 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 9 <html>
10   <head>
11     <base href="<%=basePath%>">
12    
13     <title><s:property value="getText('loginPage')"/></title>
14    
15  <meta http-equiv="pragma" content="no-cache">
16  <meta http-equiv="cache-control" content="no-cache">
17  <meta http-equiv="expires" content="0">   
18  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
19  <meta http-equiv="description" content="This is my page">
20  <!--
21  <link rel="stylesheet" type="text/css" href="styles.css">
22  -->
23 
24   </head>
25  
26   <body>
27     <s:form action="login" method="post">
28      <s:textfield name="username" key="user"></s:textfield>
29      <s:password name="password" key="pass"></s:password>
30      <s:submit name="submit" key="login"></s:submit>
31     </s:form>
32   </body>
33 </html>
login.jsp
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 
 6 <struts>
 7     <!-- Add packages here --> 
 8     <package name="struts0200" namespace="/" extends="struts-default">
 9      <default-action-ref name="index" />
10      
11   <action name="login" class="com.struts2_0200.LoginAction">
12       <result name="success">
13        /welcome.jsp
14       </result>
15       <result name="error">
16        /login.jsp
17       </result>
18      </action>
19     </package>
20 </struts>
struts.xml

引发警告的的关键之处

login.jsp页面中,<s:form action="login" method="post"> ,此处没有指明namespace属性的值,所以系统会自动的认为namespace的值为警告信息中的那样,namespace: ''

而struts.xml文件中,我们指定的namespace的值为:namespace="/",两处的namespace的值为一致,从而导致了警告的产生。

所以,解决方法很简单,将两个页面的namespace的值改成一样的就行了。这里我修改了login.jsp页面,修改内容如下:

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

另外补充一点,这种情况一般发生在Tomcat 6.0及其以后的版本,之前版本的不会发出这种警告。如果不是系统功能的需要,建议不要使用最新版本的服务器。

合群是堕落的开始 优秀的开始是孤行
原文地址:https://www.cnblogs.com/biaogejiushibiao/p/9397489.html