解决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>
原文地址:https://www.cnblogs.com/liuyiyuan/p/12697109.html