按照老师的方法将struts.enable.DynamicMethodInvocation的value值设置为true时确实可以使用!来实现动态方法调用。我之后查看了下官网的文档,官网文档(在Wildcard Method标题段落末尾)是这样说的(文档地址)
If Wildcard Method mapping uses a "!" in the action name, the Wildcard Method will overlap with another flexible approach to mapping,Dynamic Method Invocation. To use action names that include the "!" character, set struts.enable.DynamicMethodInvocation to FALSE in the application configuration.
我应该怎么理解它说的将其设置为FALSE?设置FALSE是不能实现!动态方法调用。
因为用!是指定用struts.enable.DynamicMethodInvocation来调用动态方法的,但是通用符就不必用struts.enable.DynamicMethodInvocation来调用动态方法,干脆不用写这个常量。2.5版本就需要用strict-method-invocation="false"来方法调用
哈哈,这么说的话。确实有点钻牛角尖了。那段话我也不是太理解。不过呢,咱都不用那种方式,就没必要钻那个牛角尖了。
我的理解就是,首先,开发中,基本甚至不会用到这种感叹号的访问形式,所以不必做过多的深入理解,老师也说过,这种方式只是存在,但不推荐使用,他演示给我们看看,知道这种形式存在就好了,实际根本用不到,用第三种就好了。好吧,说那么多偏离你的主题了,老师说过,想要用感叹号这种方式,必须DynamicMethodInvocation值为true。false肯定是不行的。其实开发中第三种用的很多。没必要深入研究