zoukankan      html  css  js  c++  java
  • struts2方法无法映射问题:There is no Action mapped for namespace [/] and action name [m_hi] associated with context path []

    使用struts的都知道,下面使用通配符定义的方式很常见,并且使用也很方便:
    <action name="Crud_*" class="example.Crud" method="{1}">

    最近更新struts版本到2.5.8时,发现无论怎么访问都无法启用通配符调用,一直在报如下错误:

    There is no Action mapped for namespace [/] and action name [Crud_*] associated with context path [].
     
    在struts2.5中使用了SMI(Strict Method Invocation)严格方法调用.它继承自DMI(Dynamic Method Invocation);
    关于DMI简单了解就是struts2定义的一种方法调用方式,实际工作中常用的方法调用方式是struts1中的通配符方式.因为很少用(我自己也没用过),并且不安全,官方文档写的又看不太懂,这里就不介绍了.
    官方介绍:DMI可以理解为"border police"边境政策,SMI是"tax police"税收政策;也就是SMI更严格.
    SMI是在struts-default包上定义,默认值为true,同时没有全局关闭的方式.可以在你每个定义的包上单独关闭.
    关闭包SMI方式:
        <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
        <package name="default" extends="struts-default" strict-method-invocation="false"></package>
     
    SMI造成所有的访问,其实都是经过拦截处理的.允许方法访问可以通过以下方式:
     
    解决方式:
        1 如果你的引用包struts2-core是2.5版本需要更新struts.xml的文件头:    
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">

       2 并在struts.xml中开放方法访问:
      方式一:全局配置

        <package name="default" extends="struts-default">
          <global-allowed-methods>regex:.*</global-allowed-methods>
        </package>

            方式二:action标签内配置(多个方法逗号隔开)    

        <action name="login" method="login" class="loginAction">
          <result name="login">/WEB-INF/login.jsp</result>
          <allowed-methods>login</allowed-methods>
        </action>

    局限于技术和英语水平,建议结合官方文档看本博客.

     参考资料:
      官方文档 https://struts.apache.org/core-developers/action-configuration.html#wildcard-method
  • 相关阅读:
    PHP 之ZIP压缩与解压缩文件
    xmind8 破解激活教程
    MIT 6.824 RPC 和多线程
    [AGC019E]Shuffle and Swap
    [CF1060F] Shrinking Tree
    【算法与数据结构】前序中序后序线索化二叉树及遍历
    绘画参考 多角度透视手的动作姿态线稿
    数学概率期望总结
    C#中方法、类等的默认访问修饰符~
    mysql 设置连接超时
  • 原文地址:https://www.cnblogs.com/chengmuyu/p/8297166.html
Copyright © 2011-2022 走看看