Struts2.5 404/NoSuchMethod 错误
Struts2从2.5版本开始 增加了一项AllowedMethod机制 也就是你的method需要是列表内 才可以正常访问 听说这样是极大的加强了Struts2的安全性 但是这也会导致部分非列表内method失效/404Error 我们可以在
Struts2从2.5版本开始
增加了一项AllowedMethod机制
也就是你的method需要是列表内
才可以正常访问
听说这样是极大的加强了Struts2的安全性
但是这也会导致部分非列表内method失效/404Error
我们可以在
com.opensymphony.xwork2.config.entities.ActionConfig
类里看到如下内容
<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>
也就是说 默认仅允许
execute,input,back,cancel,browse,save,delete,list,index
这几种method访问
这也就是为什么index可以访问其他的都不行的原因
找到了原因我们就可以直接在struts2.xml里面增加自己的method
例如我们需要添加一个login的method
那么在package标签下层增加一行
<global-allowed-methods>login</global-allowed-methods>
例如:
<struts>
<package name="test" namespace="/" extends="json-default">
<global-allowed-methods>login</global-allowed-methods>
<action name="*" class="systemAction" method="{1}">
<result name="login">/WEB-INF/pages/login.jsp</result>
</action>
</package>
</struts>
如果觉得一个个method设置比较繁琐
那么可以用
<global-allowed-methods>regex:.*</global-allowed-methods>
开启当前package下的所有method
当然这样就和struts2.5的安全理念有所相驳了哟
另外struts2还支持注解添加allow
@AllowedMethods
根据源码可以知晓传参为String[]