struts2.5动态方法调用和默认Action
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2.5动态方法调用和默认Action相关的知识,希望对你有一定的参考价值。
在动态方法调用中,使用通配符方法出现问题,参考了http://www.cnblogs.com/jasonlixuetao/p/5933671.html 这篇博客,问题解决了。
这个是helloworld.xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 4 "http://struts.apache.org/dtds/struts-2.5.dtd"> 5 6 <struts> 7 <package name="default" namespace="/" extends="struts-default"> 8 <global-allowed-methods>regex:.*</global-allowed-methods> 9 <action name="*_*_*" method="{2}" 10 class="com.imooc.{3}.{1}Action"> 11 <result>/result.jsp</result> 12 <result name="add">/{2}.jsp</result> 13 <result name="update">/{2}.jsp</result> 14 </action> 15 </package> 16 </struts>
在struts.xml中包含了这个文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 4 "http://struts.apache.org/dtds/struts-2.5.dtd"> 5 6 <struts> 7 8 <include file="helloworld.xml"></include> 9 <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant> 10 11 </struts>
解决2.5版本通配符的动态方法调用就是加上了这一句:
<global-allowed-methods>regex:.*</global-allowed-methods>
但是,问题来了,在使用默认Action时,加上这一句就会报错,不加就可以正常运行,下面是正常运行的helloworld.xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 4 "http://struts.apache.org/dtds/struts-2.5.dtd"> 5 6 <struts> 7 <package name="default" namespace="/" extends="struts-default"> 8 9 <default-action-ref name="index"></default-action-ref> 10 <action name="index"> 11 <result>/error.jsp</result> 12 </action> 13 14 <action name="*_*_*" method="{2}" 15 class="com.imooc.{3}.{1}Action"> 16 <result>/result.jsp</result> 17 <result name="add">/{2}.jsp</result> 18 <result name="update">/{2}.jsp</result> 19 </action> 20 </package> 21 </struts>
又发现,也只能运行默认的action,并不能调用到add或update方法。
以上是关于struts2.5动态方法调用和默认Action的主要内容,如果未能解决你的问题,请参考以下文章