• 解决Struts2.5版本使用DML动态调用和<s:form method="">method属性不生效问题


    问题原因

    两个问题根本是相同的,都是外部jsp调用Action中的方法,因为新版本2.5中 的安全机制 ,导致无法用action外部传来的方法,所以两个解决方法是一致的。


    解决步骤:

    步骤1

    新版本2.5是默认不开启动态调用的所以要手动开启,在struts.xml文件中添加常量配置,开启动态方法调用:

    <constant name="struts.enable.DynamicMethodInvocation" value="true" />

    步骤2:

    开启动态调用也不能使用,因为struts2.5的安全机制限制外部调用,所以需要声明允许直接访问的方法,

    方法有两种:

      在struts.xml中的package标签下添加<global-allowed-methods>,标签值为允许外部调用的方法名,多个用逗号分隔,要放在action标签的前面。

      或者在action标签中添加<allowed-methods>形式同上,要放在result标签后边。

    <!--第一种-->
    <package name="default" namespace="/" extends="struts-default">
    <global-allowed-methods>methodName[,...]</global-allowed-methods>
    <action></action>
    ...
    </package>
    
    
    <!--第二种-->
    <action name="login-two" class="action.LoginAction_XWork" >
    <result name="hello">/hello.jsp</result>
    <allowed-methods>methodName[,...]</allowed-methods>
    </action>
  • 相关阅读:
    数组对象---数据存储
    运行vue项目时,无法自动打开页面怎么办?
    数组扁平化
    数组去重
    CSS-----------text-transform
    CSS3-----width:max-content,min-content和fit_content属性
    可迭代对象
    bit和byte的 区别?
    前端常见跨域问题?
    HackerRank "Lucky Numbers"
  • 原文地址:https://www.cnblogs.com/liuyiyuan/p/12697109.html
Copyright © 2020-2023  润新知