The dynamic method invocation is used to avoid the separate action mapping for every action in case of dispatch action functionality. We are using wildcard method to achieve dynamic method invocation.
Example:
test.jsp
<%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> <title>Struts 2 dynamic method invocation example</title> </head> <body> <h3>This is a dynamic method invocation example.</h3> <s:form action="Test"> <s:submit value="Submit"/> <s:submit value="Show" action="showTest"/> </s:form> </body> </html> |
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng. filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>test.jsp</welcome-file> </welcome-file-list> </web-app> |
struts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="user" extends="struts-default"> <action name="*Test" method="{1}" class="com.w3schools.action.TestAction"> <result name="success">/welcome.jsp</result> </action> </package> </struts> |
TestAction.java
import com.opensymphony.xwork2.ActionSupport; /** * This class is used as an action class. * @author w3schools */ public class TestAction extends ActionSupport { private String message; public String execute(){ setMessage("execute method is called."); return SUCCESS; } public String show(){ setMessage("show method is called."); return SUCCESS; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } |
welcome.jsp
<%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> <title>Struts 2 dynamic method invocation example</title> </head> <body> <h3>This is a dynamic method invocation example.</h3> <s:property value="message" /> </body> </html> |
Output:
When click on Submit button.
When click on Show button.
Download this example.
Next Topic: Struts 2 UI tags with example.
Previous Topic: DispatchAction Functionality in Struts 2 with example.