`

struts2 警告: No configuration found for the specified action

阅读更多

在通过JSP中的form提交request的时候,控制台经常会报下面的警告信息:

 

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

 

这个问题和namespace的配置有关,经过深入研究,解决方法以及警告的原因总结如下:

 

原因:namespace匹配失败

 

form和Action的映射机制:

1) 首先用namespace进行映射(成功转入1-1,失败转入1-2)

    a) 先在struts.xml中找完全匹配的package

    b) 没有完全匹配的话,找缺省的package(没有配置namespace的package)

    c) 没有配置缺省的package的情况下,则匹配失败-->警告: No configuration found for the specified action

1-1) namespace映射成功的话,再根据action进行映射

    a) 完全匹配的话,映射成功

    b) 否则,映射失败------------------>>>画面出现404错误

namespace映射成功的情况下,映射关系如下所示:(2对2映射)

JSP的form                                         struts.xml

namespace           ---->>>         package的namespace

action                    ---->>>         action的name 

 

1-2) namespace映射失败的话,则用form中的action同package中的namespace+action的name进行

1对2匹配

    a) 完全匹配的话,映射成功

    b) 否则,映射失败------------------->>>画面出现404错误

 

namespace映射失败的情况下,映射关系如下所示:(1对2映射)

JSP的form                                         struts.xml

action                    ---->>>         package的namespace

action                    ---->>>         action的name 

 

 

配置例1:namespace完全匹配,不会出现警告信息

struts.xml:

namespace不配置的话,相当于缺省namespace

<struts>

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

 

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

        </action>

 

    </package>

</struts>

 

login.jsp:

 

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

。。。。。。

</s:form>

 

配置例2:匹配到缺省namespace,不会出现警告信息

struts.xml:

namespace不配置的话,相当于缺省namespace

<struts>

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

 

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

        </action>

 

    </package>

</struts>

 

login.jsp:

 

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

。。。。。。

</s:form>

或者

<s:form action="login">  

。。。。。。

</s:form>

 

 

配置例3:namespace匹配失败,出现警告信息

但是能够映射上,因为通过form的action可以1对2匹配成功

struts.xml:

namespace不配置的话,相当于缺省namespace

<struts>

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

 

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

        </action>

 

    </package>

</struts>

 

login.jsp:

 

<s:form action="/mypack/login">  

。。。。。。

</s:form>

 

配置例4:namespace匹配失败,出现警告信息

并且,因为action的1对2匹配也失败了,所以form提交后,画面会返回404错误

 

struts.xml:

namespace不配置的话,相当于缺省namespace

<struts>

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

 

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

        </action>

 

    </package>

</struts>

 

login.jsp:

 

<s:form action="login">  

。。。。。。

</s:form>

分享到:
评论
1 楼 Jaycee 2010-12-02  
struts.xml:
namespace不配置的话,相当于缺省namespace
<struts>
    <package name="struts2" namespace="/" extends="struts-default">

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

    </package>
</struts>

login.jsp:

<s:form action="/login"> 
。。。。。。
</s:form>

这篇文章很好,解决了我的问题, 不过我试验了一下,这种情况,不知道为什么会提示警告,并且登录后会报404, 按照楼主的意思,通过form的action可以1对2匹配成功才对。

相关推荐

    struts2开发遇到的问题

    2. **警告:No configuration found for the specified action: 'sum.action' in namespace: ''** 这个警告通常是因为Struts2找不到指定的Action。如果在JSP中使用 `&lt;s:form action=”sum.action”&gt;`,对应的源文件...

    关于IllegalStateException: The specified child already has a parent.

    IllegalStateException: The specified child already has a parent.我的博客中有文章讲解

    Struts2 2.3.16_doc

    This result uses the ActionMapper provided by the ActionMapperFactory to redirect the browser to a URL that invokes the specified action and (optional) namespace. This is better than the ...

    JAVA连接各种数据库

    Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl 为 Oracle 的 SID String user = "test"; String password = "test"; Connection conn = ...

    使用mdadm创建软RAID

    其中,-C指定创建模式,-a yes自动创建设备文件,-l 1指定Raid级别,-n 2指定磁盘个数,/dev/sdb{3,4}指定要使用的磁盘。 管理软RAID 软RAID创建后,可以使用mdadm命令来管理它。例如,要查看软RAID的详细信息,...

    报错 代码 经验

    : No configuration found for the specified action: 'fileUpLoad.action' in namespace: '/manager'. Form action defaulting to 'action' attribute's literal value. ``` **知识点解释:** 1. **问题描述:** ...

    报错 No input file specified的解决办法

    你可以参考提供的资源,如 "No input file specified的解决方法-百度经验.url" 和 "报错 ”No input file specified.“ 排查 - zh_mead的博客 - CSDN博客.url",这些链接可能提供了更具体的步骤和案例。 在实际操作...

    ASP.NET The system cannot find the file specified解决办法

    ASP.NET The system cannot find the file specified解决办法 Server Error in ‘/’ Application. The system cannot find the file specified Description: An unhandled exception occurred during the execution...

    基于DataFrame改变列类型的方法

    TypeError: No loop matching the specified signature and casting was found for ufunc det 查了半天发现是数据类型的问题,numpy在算逆的时候会先检查一下数据类型是否一致,若不一致就会报错(话说这个错误提示...

    Android wifi

    然后,调用`saveConfiguration()`保存此配置,并通过`connect(int)`方法连接指定的网络ID。注意,连接操作可能需要用户权限。 3. **密码输入**: 在`WifiDemo`中,用户可能需要输入Wi-Fi密码。这通常通过`EditText...

    vs常见编译错误集锦

    vs常见编译错误集锦 vs常见编译错误集锦 vs常见编译错误集锦

    S7-200通讯 specified access point not found补丁

    标题中的"S7-200通讯 specified access point not found补丁"指的是在使用Siemens S7-200系列PLC(可编程逻辑控制器)进行通信时遇到的问题,即"指定的访问点未找到"。这通常是由于网络配置错误、硬件故障或者软件不...

    CrashSenderexe.zip

    在我们的日常计算机使用中,有时会遇到这样的情况:“报错crashsender.exe is not found the specified path”,这通常意味着系统尝试执行一个名为“CrashSender.exe”的可执行文件,但无法在指定的路径中找到它。...

    Delete the specified folder

    在这个场景下,"Delete the specified folder" 指的是通过编程或脚本方式删除特定路径下的文件夹。VC(Visual C++)是这个上下文中可能使用的编程环境,因为它是一个广泛用于Windows平台的C++开发工具。 删除文件夹...

    nginx提示No input file specified怎么办.docx

    Nginx 提示 "No input file specified" 的解决方法 Nginx 是一个流行的开源 web 服务器软件,然而,在使用 Nginx 时,有时可能会遇到 "No input file specified" 的错误提示,这篇文章将详细讲解该错误的解决方法。...

    The user specified as a definer ('root'@'%') does not exist 解决方法

    mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法

    openssh8.5.p1.tar.gz 快速升级

    OpenSSH 命令注入漏洞(CVE-2020-15778),文件包含installs.sh、openssh-8.5p1.tar.gz、openssl-1.1.1i.tar.gz、zlib-1.2.11.tar.gz。升级时候将openssh.tar.gz放至/home下解压,进入openssh目录,执行chmod +x ...

    struts框架搭建

    ### Struts2框架搭建及配置详解 #### 一、Struts2框架简介 Struts2是Struts的一个改进版本,它结合了WebWork框架和Struts框架的优点,并且增加了许多新特性,使得开发者能够更加方便地开发Java Web应用程序。...

    iOS 报clang: error: no input files错误的解决方法

    在iOS开发过程中,开发者可能会遇到一个令人困惑的错误——`clang: error: no input files`。这个错误通常出现在Xcode编译项目时,提示没有找到输入文件,导致编译失败。本文将详细介绍如何解决这个问题。 ### 错误...

    hash table spell checking

    it is found in the word list file) is a possible correction. Your solution to this assessment should consider the following variations of a misspelled word. • Transposing of adjacent letters For ...

Global site tag (gtag.js) - Google Analytics