struts每个版本都会有一些新特性,今天升级struts2.5遇到一个通配符的问题,通过查找各方资料终于解决了,现做个记录。
struts2.5使用通配符报找不到相应action的错误,不用通配符就正常。
问题原因:struts2.5增加了安全性,在package中需要添加全局标签 <global-allowed-methods>regex:.*</global-allowed-methods>
,
或者在action
中添加 <allowed-methods>addUser,addUser2</allowed-methods>
指定通配符允许调用的方法。
建议使用全局通配符标签,因为在action中配置需要增加大量的工作量降低效率。
<?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>
<package name="default" namespace="/" extends="struts-default">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="helloworld" class="com.imooc.action.HelloWorldAction">
<result>/result.jsp</result>
<result name="add">/add.jsp</result>
<result name="update">/update.jsp</result>
</action>
</package>
</struts>