您的位置:首页 > 其它

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

2013-01-10 22:58 381 查看
引自力云:

警告: 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页面关联有其他文件,这里就不复制出来了,单独使用可能会有其他的错误。如果读者需要测试的话,可以自己写一个简单的登录页面)

引发警告的文件:

login.jsp

<%@ page language="java"
import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib prefix="s"
uri="/struts-tags"%>

<%

String path = request.getContextPath();

String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base
href="<%=basePath%>">

<title><s:property
value="getText('loginPage')"/></title>

<meta http-equiv="pragma"
content="no-cache">

<meta http-equiv="cache-control"
content="no-cache">

<meta http-equiv="expires"
content="0">

<meta http-equiv="keywords"
content="keyword1,keyword2,keyword3">

<meta http-equiv="description"
content="This is my page">

<!--

<link rel="stylesheet"
type="text/css" href="styles.css">

-->

</head>

<body>

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

<s:textfield name="username"
key="user"></s:textfield>

<s:password name="password"
key="pass"></s:password>

<s:submit name="submit"
key="login"></s:submit>

</s:form>

</body>

</html>

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>

<!-- Add packages here
-->

<package name="struts0200" namespace="/"
extends="struts-default">

<default-action-ref
name="index" />

<action
name="login"
class="com.struts2_0200.LoginAction">

<result
name="success">

/welcome.jsp

</result>

<result
name="error">

/login.jsp

</result>

</action>

</package>

</struts>

引发警告的的关键之处是:

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及其以后的版本,之前版本的不会发出这种警告。如果不是系统功能的需要,建议不要使用最新版本的服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐