Search code examples
javajspstruts2dmi

Multiple Entrypoints in Struts Action (Migration Struts 2.2.3 -> 2.3.1)


I have an action in struts.xml:

<action name="reprint" class="reprintAction">
        <result name="success" type="redirectAction">
            <param name="actionName">reprint</param>
            <param name="namespace">/x</param>
            <param name="errorFlag">${errorFlag}</param>
            <param name="message">${message}</param>
        </result>
        <result name="view">/jsp/reprintOverview.jsp</result>
</action>

JSP:

<s:form action="reprint">
    <s:select name="selectedPdfPrinter" list="shopPdfPrinterList" listKey="deviceId" listValue="deviceId" theme="simple"/>
    <s:submit value="Print" theme="simple" method="shopPdfReprint"/>
</s:form>

with several form elements, all bound to one action. Each form has an individual submit-button with a distinct method (e.g. "shopPdfReprint"). Each method is mapped on to a method in the corresponding class.

Everything is working fine with Struts 2.2.3. But after Migration to 2.3.1 the method-mapping is not working. Instead calling the corresponding method (e.g. "shopPdfReprint"), only the execute() method of the class is invoked.

I've looked at the Docs, but unfortunately found no clue, how to adapt to 2.3.1

Anybody ran into this?


Solution

  • This happens because you have turned off DMI. The method attribute works with submit tag as before even after resent security fixes. Enable DMI using the constant

    <constant name="struts.enable.DynamicMethodInvocation" value="true"/> 
    

    let me know if it didn't work.