I have the following action mapping in my application's struts.xml
, which was working just fine with Struts 2.3.28.1; calls to the /editApplication
action where being handled by the x.ApplicationHandler.edit
method.
<action name="*Application" class="x.ApplicationHandler" method="{1}">
<result name="input">/WEB-INF/application.jsp</result>
<result name="success" type="redirectAction">
<param name="actionName">browseApps</param>
</result>
</action>
After upgrading to Struts 2.5, this no longer works. Attempting to call the /editApplication
action shows the 404 error:
HTTP Status 404 - There is no Action mapped for namespace [/] and action name [editApplication]
I've reviewed the Struts 2.5 release notes, and don't see any mention of updates to the way wildcard based action mapping works. Is there any reason why this configuration no longer works?
It is Strict Method Invocation and since Struts 2.5 it is enabled by default.
From the docs about SMI and wildcard mappings:
You can disabled it per
<package>
.OR you can add allowed methods names per action using
<allowed-methods>
tag.OR add allowed methods names per package using
<global-allowed-methods>
tag.NOTE In order to use above tags in struts.xml you must update DTD definition to
2.5
.There is also
@AllowedMethods
annotation in struts2-convention-plugin which allows actions to specify allowed action methods.