使用通配符调用方法一直出现如下的映射错误:
附上我的struts.xml代码块:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 是否开启方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<!--添加包 -->
<package name="gzy" namespace="/" extends="struts-default">
<action name="*Action" class="gzy.LoginRegistAction" method="{1}">
<!-- 定义三个逻辑视图和物理资源之间的映射 -->
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
检查了很多遍,Action也没有写错,配置也没有问题,后来发现原来是版本的问题,放在Struts2.3中是正确的,Struts2.5怎么样也行不通。
Struts2.5 为了增加安全性,在 struts.xml 添加了一个个属性:
<global-allowed-methods>regex:.*</global-allowed-methods>
加在package中,就不出错了
当然还有一种方法,使用通配符调用方法时,内部会验证是否允许访问该方法,所以添加如下代码:
<allowed-methods>方法1,放法2,...</allowed-methods>
方法为Action的类的方法,一样添加在package中。
两种方法都可以解决通配符的问题。