Struts 2 Action Tag Example

In this tutorial, we are going to describe the action tag. The action tag is a generic tag that is used to call actions directly from a JSP page by specifying the action name and an optional namespace. The body content of the tag is used to render the results from the Action. Any result processor defined for this action in struts.xml will be ignored, unless the executeResult parameter is specified.

The action tag allows the programmers to execute an action from the view page. They can achieve this by specifying the action name. They can set the “executeResult” parameter to “true” to render the result directly in the view. Or, they can set this parameter to “false”, but make use of the request attributes exposed by the action method.

Create action class:

package com.dineshonjava.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

/**
 * @author Dinesh Rajput
 *
 */
public class DataTagAction extends ActionSupport {

 private static final long serialVersionUID = -7744420104547018874L;
 
 private String userName;
 
 public String execute() {
  return SUCCESS;
 }
public String sayHello() {
     return SUCCESS;
}
 public String getUserName() {
  return userName;
 }

 public void setUserName(String userName) {
  this.userName = userName;
 }
 
}

Create views
Let us have index.jsp to demonstrate the use of the generator tag:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Generator Control Tag in Struts2 | dineshonjava.com</title>
</head>
 
<body>
<h2>Action Data Tag Struts2</h2>
<h3>The User Name:</h3>
<s:generator val="%{'Dinesh,Sweety,Anamika,
         Aadesh,Vinesh,Ankit,Honey '}" count="7" 
         separator=",">
   <s:iterator>
      <s:property /><br/>
   </s:iterator>
</s:generator> 
</body>
</html>

Next let us have success.jsp with the following content:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Action Data Tag Struts2 | dineshonjava.com</title>
</head>
<body>
    <h2>Action Data Tag Struts2</h2>
  <s:action name="hello" executeResult="true">
      Say Hello To:  <br />
   </s:action>
</body>
</html>

Configuration Files
struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.custom.i18n.resources" value="myapp" />
 
    <package name="default" extends="struts-default" namespace="/">
        <action name="hello" class="com.dineshonjava.struts2.action.DataTagAction" method="sayHello">
            <result name="success">/success.jsp</result>
        </action>
         <action name="actiontag" class="com.dineshonjava.struts2.action.DataTagAction">
            <result name="success">/success.jsp</result>
        </action>
    </package>
 </struts>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Struts2DataTag</display-name>
 <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Right click on the project name and click Export > WAR File to create a War file. Then deploy this WAR in the Tomcat’s webapps directory. Finally, start Tomcat server and try to access

URL http://localhost:8080/doj/actiontag.

This will give you following screen:

Struts 2 Action Tag Example

Download SourceCode
ActionDataTagExample.zip

<<Previous <<   || Index ||   >>Next >>
Previous
Next