Class ParameterLookupDispatchAction

  • Direct Known Subclasses:
    MethodPropertiesAction

    public abstract class ParameterLookupDispatchAction
    extends UrlPathDispatchAction
    Deze abstracte DispatchAction dispatcht naar een publieke methode welke genoemd is in een Map van parameter naar methode naam. Indien het request een parameter uit de Map met niet-lege waarde bevat wordt de bijbehorende methode aangeroepen. Indien er geen methode kan worden gevonden wordt unspecified() aangeroepen.

    Indien het request was gecancelled (door het indrukken van een html:cancel knop) wordt cancelled() aangeroepen.

    Met deze action kunnen verschillende methodes van een Action class worden aangeroepen door meerdere submit buttons op één form; bijvoorbeeld:

    <html:submit property="save">Opslaan</html:submit>
    <html:submit property="delete" onclick="bCancel = true;">Verwijderen</html:submit>

    Of doormiddel van een submit met JavaScript, bijvoorbeeld:

     <html:hidden property="filterChange"/>
     <script language="JavaScript1.1">
     <!--
         function onFilterChange(event) {
             bCancel = true; // geen validation op deze functie
             document.forms[0].filterChange.value = "submit";
             document.forms[0].submit();
         }
     // -->
     </script>
     <html:select property="filter" onchange="onFilterChange();">
         ...
     </html:select>
     
    LET OP: Ten behoeve van het kunnen submitten van een form met JavaScript met een hidden property maakt deze Action na het dispatchen indien er een String property in het DynaActionForm aanwezig is met de naam van parameter van de uitgevoerde methode deze leeg.

    Bij deze voorbeelden hoort de volgende subclass:

     public class ExampleAction extends ParameterLookupDispatchAction {
         protected Map getParameterMethodMap() {
             Map map = new HashMap();
             map.put("save", "mySaveMethod");
             map.put("delete", myDeleteMethod");
             map.put("filterChange", "myFilterChangeMethod");
             return map;
         }
    
         public ActionForward mySaveMethod(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
         throws Exception {
             ...
         }
    
         idem voor myDeleteMethod en myFilterChangeMethod
     }
     
    • Constructor Detail

      • ParameterLookupDispatchAction

        public ParameterLookupDispatchAction()
    • Method Detail

      • execute

        public org.apache.struts.action.ActionForward execute​(org.apache.struts.action.ActionMapping mapping,
                                                              org.apache.struts.action.ActionForm form,
                                                              javax.servlet.http.HttpServletRequest request,
                                                              javax.servlet.http.HttpServletResponse response)
                                                       throws Exception
        Overrides:
        execute in class UrlPathDispatchAction
        Throws:
        Exception
      • getMethodParameter

        protected String getMethodParameter​(org.apache.struts.action.ActionMapping mapping,
                                            org.apache.struts.action.ActionForm form,
                                            javax.servlet.http.HttpServletRequest request,
                                            javax.servlet.http.HttpServletResponse response)
        Overrides:
        getMethodParameter in class UrlPathDispatchAction