您的位置:首页 > 编程语言 > Java开发

Struts2.5版本方法无法使用通配符问题

2016-06-03 12:31 387 查看
问题:在struts2.5中如果使用方法通配符,是无法进行方法调用的:

<action name="login_*" class="loginAction" method="{1}">
.............
</action>

因为从2.3开始在package元素中增加了一个属性,为了限制DMI的方法访问:

<package name="test" namespace="/test" extends="struts-default" strict-method-invocation="">
..................
</package>

默认情况下是没有设置值,所以2.3是可以进行调用的。但是到了2.5以后默认设置为true,所以从2.5开始默认情况下是无法进行通配符方法调用的。修改的方式:

1、

<package name="test" namespace="/test" extends="struts-default" strict-method-invocation="false">
</package>

2、

<package name="test" namespace="/test" extends="struts-default" strict-method-invocation="true">
<action name="electricText_*" class="electricTextAction" method="{1}">
<result name="{1}">/system/textAdd.jsp</result>
<allowed-methods>添加Action类中允许访问的方法,以逗号分隔</allowed-methods>
</action>
</package>

在不启用的情况下,注意默认的匹配规则是: SMI is disabled - call to any action method is allowed that matches the default RegEx -
([A-Za-z0-9_$]*)


可以通过定义常量更改,在struts.xml中:


<constant name="struts.strictMethodInvocation.methodRegex" value="([a-zA-Z]*)"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Struts2.5 通配符 Java Web