Struts 2.5.14.1+REST插件自定义方法报错:Method send不被允许
解决Struts 2 REST插件自定义方法不允许的问题
我之前也碰到过这个问题,其实这是Struts 2.5+版本结合REST插件时的方法白名单限制导致的——Struts 2.5开始默认启用了严格的方法访问控制,而REST插件只把index()、show()这类标准CRUD方法加入了允许列表,自定义方法必须手动配置才能生效。下面给你两种可行的解决方式:
方法一:通过XML配置声明允许的方法
你可以在struts.xml里全局配置,或者针对单个Action配置:
- 全局配置(对所有REST Action生效):
在<struts>根标签下添加:<global-allowed-methods>index,show,send</global-allowed-methods> - 单个Action配置(仅对
messageAction生效):
找到对应的Action配置块,添加<allowed-methods>标签:<action name="message" class="your.package.MessageAction"> <allowed-methods>index,show,send</allowed-methods> </action>
方法二:通过注解声明允许的方法
如果你的项目用了Struts 2注解,可以直接在Action类上添加@AllowedMethods注解,指定允许的自定义方法:
@AllowedMethods({"send"}) public class MessageAction extends ActionSupport { // 你的index()、show()方法 public String send() { // 自定义方法逻辑 return SUCCESS; } }
如果需要保留默认方法的同时添加自定义方法,也可以写成:@AllowedMethods({"index","show","send"})
补充说明
Struts 2.5引入的方法访问控制是为了提升安全性,防止恶意请求调用未授权的方法。REST插件默认只放行标准的REST方法(index、show、create、update、destroy等),所以自定义方法必须显式加入允许列表才能被正常调用。
内容的提问来源于stack exchange,提问作者Anand Raja
相关产品推荐
相关产品推荐

