struts2配置文件struts.xml配置action的method无效

一新来同事看代码的时候发现struts.xml 中配置的method属性无效,

struts.xml 配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.devMode" value="false" />
	<constant name="struts.i18n.encoding" value="UTF-8"/>
	<constant name="struts.serve.static.browserCache" value="false"/>
	
	<package name="default" namespace="/" extends="struts-default">
	   <action name="custom" class="customAction" method="custom">
	    	<result name="success">/WEB-INF/view/index.jsp</result>
	    	<result name="custom">/WEB-INF/view/custom.jsp</result>
	   </action>
	</package>
	
	
</struts>


java代码:
public class customAction{
	
	public String index(){
		try {
			System.out.println("index");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "success";
	}
	
	public String custom(){
		System.out.println("custom");
		return "custom";
	}
	
}


访问URL: http://localhost:6060/custom/custom!index.do,结果却能访问到index方法。
按理来说,在struts.xml中配置了struts.enable.DynamicMethodInvocation=false、method=custom,通过上面的url是访问不到index方法。

当时我也不得其解,之后查找代码终于发现问题所在。

问题原因:
在Struts 2的核心jar包-struts2-core中,有一个default.properties的默认配置文件,default.properties是不能被更改的。如需要更改里面的配置信息,可以在src根目录下建一个 struts.properties的配置文件,然后重写所要更改的配置信息。经查看struts.properties中中配置了struts.enable.DynamicMethodInvocation=true。

结论:如果相关属性在这个文件里面设置了属性,那么在struts.xml 中再配置是无效的。

经过测试得出这个结论,还望指教。

你可能感兴趣的:(java,struts2,method,struts.xml)