问题:在struts2.5中若是使用方法通配符,是没法进行方法调用的:jsp
<action name="login_*" class="loginAction" method="{1}"> ............. </action>
由于从2.3开始在package元素中增长了一个属性,为了限制DMI的方法访问:spa
<package name="test" namespace="/test" extends="struts-default" strict-method-invocation=""> .................. </package>
默认状况下是没有设置值,因此2.3是能够进行调用的。可是到了2.5之后默认设置为true,因此从2.5开始默认状况下是没法进行通配符方法调用的。修改的方式:code
一、xml
<package name="test" namespace="/test" extends="struts-default" strict-method-invocation="false"> </package>
二、io
<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_$]*)
class
能够经过定义常量更改,在struts.xml中:
test
<constant name="struts.strictMethodInvocation.methodRegex" value="([a-zA-Z]*)"/>