为什么不排除“提交”按钮的参数?
因为此参数位于默认情况下在其中引用您操作excludeParams
的params
拦截器的列表中defaultStack
。
<s:submit>
单击时如何调用postAction()方法?
在此问题中,您将询问如何调用方法(而不是操作)。使用名称空间和动作名称将第一个动作与方法之间的差异映射到指定的URL。因此,要调用除动作以外的方法,应打开DMI。从2.3.16版本开始,Struts禁用了此选项。以下配置常量可用于struts.xml
:
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<s:form namespace="/admin_side" action="test">
<s:submit value="Submit" method="postAction"/>
</s:form>
如果您不想使用DMI,则可以选择启用action:
参数前缀
<constant name="struts.mapper.action.prefix.enabled" value="true"/>
并使用映射到该方法的操作 postAction
<s:form namespace="/admin_side" action="test">
<s:submit value="Submit" action="postAction"/>
</s:form>
并在不使用的情况下使用注释params.excludeParams
。
@InterceptorRef(value="defaultStack" params={"validation.excludeMethods", "test"})
该action:postAction
参数位于“排除”列表上的警告仍然存在,但仅在时出现struts.devMode=true
。您不必担心,因为它会警告excludeParams
通过的列表中的所有参数。要关闭,devMode
您应该设置
<constant name="struts.devMode" value="false" />