• [转]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及其以后的版本,之前版本的不会发出这种警告。如果不是系统功能的需要,建议不要使用最新版本的服务器。

    合群是堕落的开始 优秀的开始是孤行
  • 相关阅读:
    python修改python unittest的运行顺序
    史上最强大的python selenium webdriver的包装
    第六种方式,python使用cached_property缓存装饰器和自定义cached_class_property装饰器,动态添加类属性(三),selnium webdriver类无限实例化控制成单浏览器。
    python带参装饰器的改良版
    第五种方式,python使用组合来添加类方法和属性(二),以selenium的webdriver为例
    python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)
    linux添加PYTHONPATH环境变量
    linux 按照端口一句命令杀死进程,按照进程名称一句命令杀死进程
    python __all__用法
    使用pycharm,追求最优的代码。
  • 原文地址:https://www.cnblogs.com/biaogejiushibiao/p/9397489.html
Copyright © 2020-2023  润新知