All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.struts.actions.MappingDispatchAction Maven / Gradle / Ivy

Go to download

Base project: http://central.maven.org/maven2/struts/struts/1.2.9/ This version of Struts doesn't throw java.io.NotSerializableException when the application server wants to persist sessions and makes renderFocusJavascript return valid xml

The newest version!
/*
 * $Id: MappingDispatchAction.java 54929 2004-10-16 16:38:42Z germuska $ 
 *
 * Copyright 2003,2004 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.struts.actions;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 * 

An abstract Action that dispatches to a public * method that is named by the parameter attribute of * the corresponding ActionMapping. This is useful for developers who prefer * to combine many related actions into a single Action class.

* *

To configure the use of this action in your * struts-config.xml file, create an entry like this:

* *

 *   <action path="/saveSubscription"
 *           type="org.example.SubscriptionAction"
 *           name="subscriptionForm"
 *          scope="request"
 *          input="/subscription.jsp"
 *      parameter="method"/>
 * 
* *

where 'method' is the name of a method in your subclass of * MappingDispatchAction that has the same signature (other than method * name) of the standard Action.execute method. For example, you might combine * the methods for managing a subscription into a single * MappingDispatchAction class using the following methods:

*
    *
  • public ActionForward create(ActionMapping mapping, ActionForm form, * HttpServletRequest request, HttpServletResponse response) * throws Exception
  • *
  • public ActionForward edit(ActionMapping mapping, ActionForm form, * HttpServletRequest request, HttpServletResponse response) * throws Exception
  • *
  • public ActionForward save(ActionMapping mapping, ActionForm form, * HttpServletRequest request, HttpServletResponse response) * throws Exception
  • *
  • public ActionForward delete(ActionMapping mapping, ActionForm form, * HttpServletRequest request, HttpServletResponse response) * throws Exception
  • *
  • public ActionForward list(ActionMapping mapping, ActionForm form, * HttpServletRequest request, HttpServletResponse response) * throws Exception
  • *
*

for which you would create corresponding <action> configurations * that reference this class:

* *

 *  <action path="/createSubscription" 
 *          type="org.example.SubscriptionAction"
 *          parameter="create">
 *      <forward name="success" path="/editSubscription.jsp"/>
 *  </action>
 * 
 *  <action path="/editSubscription" 
 *          type="org.example.SubscriptionAction"
 *          parameter="edit">
 *      <forward name="success" path="/editSubscription.jsp"/>
 *  </action>
 *
 *  <action path="/saveSubscription" 
 *          type="org.example.SubscriptionAction" 
 *          parameter="save"
 *          name="subscriptionForm" 
 *          validate="true" 
 *          input="/editSubscription.jsp" 
 *          scope="request">
 *      <forward name="success" path="/savedSubscription.jsp"/>
 *  </action>
 *
 *  <action path="/deleteSubscription" 
 *          type="org.example.SubscriptionAction"
 *          name="subscriptionForm"
 *          scope="request"
 *          input="/subscription.jsp"
 *          parameter="delete">
 *      <forward name="success" path="/deletedSubscription.jsp"/>
 *  </action>
 *
 *  <action path="/listSubscriptions" 
 *          type="org.example.SubscriptionAction"
 *          parameter="list">
 *      <forward name="success" path="/subscriptionList.jsp"/>
 *  </action>
 * 
* *

NOTE - Unlike DispatchAction, mapping characteristics * may differ between the various handlers, so you can combine actions in the * same class that, for example, differ in their use of forms or validation. * Also, a request parameter, which would be visible to the application user, * is not required to enable selection of the handler method. *

* * @version $Rev: 54929 $ $Date: 2004-10-16 17:38:42 +0100 (Sat, 16 Oct 2004) $ * @since Struts 1.2 */ public class MappingDispatchAction extends DispatchAction { // -------------------------------------------------------- Class Variables /** * Commons Logging instance. */ private static Log log = LogFactory.getLog(MappingDispatchAction.class); // --------------------------------------------------------- Public Methods /** * Process the specified HTTP request, and create the corresponding HTTP * response (or forward to another web component that will create it). * Return an ActionForward instance describing where and how * control should be forwarded, or null if the response has * already been completed. * * This method dispatches the request to other methods of * MappingDispatchAction using the 'parameter' attribute of * ActionMapping and Java Introspection. * * @param mapping The ActionMapping used to select this instance * @param form The optional ActionForm bean for this request (if any) * @param request The HTTP request we are processing * @param response The HTTP response we are creating * * @return Return an ActionForward instance describing where * and how control should be forwarded, or null if * the response has already been completed. * * @exception Exception if an exception occurs */ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // Use the overridden getMethodName. return super.execute(mapping, form, request, response); } /** * Method which is dispatched to when there is no value for the * parameter in the ActionMapping. Subclasses of * MappingDispatchAction should override this method * if they wish to provide default behavior different than throwing a * ServletException. * * @param mapping The ActionMapping used to select this instance * @param form The optional ActionForm bean for this request (if any) * @param request The HTTP request we are processing * @param response The HTTP response we are creating * * @return Return an ActionForward instance describing where * and how control should be forwarded, or null if * the response has already been completed. * * @exception Exception if an exception occurs */ protected ActionForward unspecified( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String message = messages.getMessage("mapping.parameter", mapping.getPath()); log.error(message); throw new ServletException(message); } /** * Returns the method name, given a parameter's value. * * @param mapping The ActionMapping used to select this instance * @param form The optional ActionForm bean for this request (if any) * @param request The HTTP request we are processing * @param response The HTTP response we are creating * @param parameter The ActionMapping parameter's name * * @return The method's name. * @since Struts 1.2.0 */ protected String getMethodName( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String parameter) throws Exception { // Return the unresolved mapping parameter. return parameter; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy