Struts MappingDispatchAction
class is used to group similar functionality into a single action class, and execute the function depends on parameter
attribute of the corresponding ActionMapping
. Here’s an example to show the use of MappingDispatchAction
.html
MappingDispatchAction
classExtends the MappingDispatchAction
class, and declares two methods –generateXML()
and generateExcel()
.java
package com.mkyong.common.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.MappingDispatchAction; public class MyCustomDispatchAction extends MappingDispatchAction{ public ActionForward generateXML(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { request.setAttribute("method", "generateXML is called"); return mapping.findForward("success"); } public ActionForward generateExcel(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { request.setAttribute("method", "generateExcel is called"); return mapping.findForward("success"); } }
Declares two action mappings, each point to same MyCustomDispatchAction
class with different parameter
attributes.apache
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd"> <struts-config> <action-mappings> <action path="/CustomDispatchActionXML" type="com.mkyong.common.action.MyCustomDispatchAction" parameter="generateXML" > <forward name="success" path="/pages/DispatchExample.jsp"/> </action> <action path="/CustomDispatchActionExcel" type="com.mkyong.common.action.MyCustomDispatchAction" parameter="generateExcel" > <forward name="success" path="/pages/DispatchExample.jsp"/> </action> <action path="/Test" type="org.apache.struts.actions.ForwardAction" parameter="/pages/TestForm.jsp" > </action> </action-mappings> </struts-config>
In JSP page, the links work as following :app
/CustomDispatchActionXML
will execute the generateXML()
method./CustomDispatchActionExcel
will execute the generateExcel()
method.<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%> Struts - DispatchAction Example html:link Generate XML File | Generate Excel File a href Generate XML File | Generate Excel File
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> Struts - DispatchAction Example
http://localhost:8080/StrutsExample/Test.do
jsp
If the 「Generate XML File」 link is clicked, it will forward to http://localhost:8080/StrutsExample/CustomDispatchActionXML.do
spa
If the 「Generate Excel File」 link is clicked, it will forward to http://localhost:8080/StrutsExample/CustomDispatchActionExcel.do
excel