<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
  <meta http-equiv="Content-Language" content="en"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>Coding actions</title>

  <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
  <link href="/css/main.css" rel="stylesheet">
  <link href="/css/custom.css" rel="stylesheet">
  <link href="/css/syntax.css" rel="stylesheet">

  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
  <script type="text/javascript" src="/js/community.js"></script>

  <!-- Matomo -->
  <script>
    var _paq = window._paq = window._paq || [];
    /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
    /* We explicitly disable cookie tracking to avoid privacy issues */
    _paq.push(['disableCookies']);
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
      var u="//analytics.apache.org/";
      _paq.push(['setTrackerUrl', u+'matomo.php']);
      _paq.push(['setSiteId', '41']);
      var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
    })();
  </script>
  <!-- End Matomo Code -->
</head>
<body>

<a href="https://github.com/apache/struts" class="github-ribbon">
  <img decoding="async" loading="lazy" style="position: absolute; right: 0; border: 0;" width="149" height="149" src="https://github.blog/wp-content/uploads/2008/12/forkme_right_red_aa0000.png?resize=149%2C149" class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1">
</a>

<header>
  <nav>
    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
            Menu
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
        </div>
        <div id="struts-menu" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Home<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/index.html">Welcome</a></li>
                <li><a href="/download.cgi">Download</a></li>
                <li><a href="/releases.html">Releases</a></li>
                <li><a href="/announce-2024.html">Announcements</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Support<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/mail.html">User Mailing List</a></li>
                <li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
                <li><a href="/security.html">Reporting Security Issues</a></li>
                <li><a href="/commercial-support.html">Commercial Support</a></li>
                <li class="divider"></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
                <li class="divider"></li>
                <li><a href="/maven/project-info.html">Maven Project Info</a></li>
                <li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
                <li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Documentation<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/birdseye.html">Birds Eye</a></li>
                <li><a href="/primer.html">Key Technologies</a></li>
                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
                <li class="divider"></li>
                <li><a href="/getting-started/">Getting Started</a></li>
                <li><a href="/security/">Security Guide</a></li>
                <li><a href="/core-developers/">Core Developers Guide</a></li>
                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
                <li><a href="/plugins/">Plugins</a></li>
                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
                <li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Contributing<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/youatstruts.html">You at Struts</a></li>
                <li><a href="/helping.html">How to Help FAQ</a></li>
                <li><a href="/dev-mail.html">Development Lists</a></li>
                <li class="divider"></li>
                <li><a href="/submitting-patches.html">Submitting patches</a></li>
                <li><a href="/builds.html">Source Code and Builds</a></li>
                <li><a href="/coding-standards.html">Coding standards</a></li>
                <li><a href="/contributors/">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/release-guidelines.html">Release Guidelines</a></li>
                <li><a href="/bylaws.html">PMC Charter</a></li>
                <li><a href="/volunteers.html">Volunteers</a></li>
                <li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
                <li><a href="/updating-website.html">Updating the website</a></li>
              </ul>
            </li>
            <li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
          </ul>
        </div>
      </div>
    </div>
  </nav>
</header>


<article class="container">
  <section class="col-md-12">
    <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/getting-started/coding-actions.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <a href="index.html" title="back to Getting started"><< back to Getting started</a>
    
    <h1 class="no_toc" id="coding-actions">Coding actions</h1>

<ul id="markdown-toc">
  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
  <li><a href="#struts-2-action-classes" id="markdown-toc-struts-2-action-classes">Struts 2 Action Classes</a></li>
  <li><a href="#processing-form-input-in-the-action-class" id="markdown-toc-processing-form-input-in-the-action-class">Processing Form Input In The Action Class</a></li>
  <li><a href="#summary" id="markdown-toc-summary">Summary</a></li>
</ul>

<p>This tutorial assumes you’ve completed the <a href="using-tags">Using Struts 2 Tags</a> tutorial and have a working <strong>using-tags</strong> 
project. The example code for this tutorial, <strong>coding-actions</strong>, is available for checkout from the Struts 2 GitHub repository 
<a href="https://github.com/apache/struts-examples">struts-examples</a>.</p>

<h2 id="introduction">Introduction</h2>

<p>Coding a Struts 2 Action involves several parts:</p>

<ol>
  <li>Mapping an action to a class</li>
  <li>Mapping a result to a view</li>
  <li>Writing the controller logic in the Action class</li>
</ol>

<p>In the previous tutorials we covered how to configure Struts to map a URL such as <code class="language-plaintext highlighter-rouge">hello.action</code> to an Action class 
such as <code class="language-plaintext highlighter-rouge">HelloWorldAction</code> (specifically the execute method).</p>

<p><strong>Action Mapping</strong></p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;action</span> <span class="na">name=</span><span class="s">"hello"</span> <span class="na">class=</span><span class="s">"org.apache.struts.helloworld.action.HelloWorldAction"</span> <span class="na">method=</span><span class="s">"execute"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;result</span> <span class="na">name=</span><span class="s">"success"</span><span class="nt">&gt;</span>/HelloWorld.jsp<span class="nt">&lt;/result&gt;</span>
<span class="nt">&lt;/action&gt;</span>
</code></pre></div></div>

<p>The Action mapping above also specified that if the <code class="language-plaintext highlighter-rouge">execute</code> method of class <code class="language-plaintext highlighter-rouge">HelloWorldAction</code> returns <code class="language-plaintext highlighter-rouge">success</code> 
then the view <code class="language-plaintext highlighter-rouge">HelloWorld.jsp</code> will be returned to the browser.</p>

<p>This tutorial will introduce you to the basics of writing the controller logic in the Action class.</p>

<h2 id="struts-2-action-classes">Struts 2 Action Classes</h2>

<p>Action classes act as the controller in the MVC pattern. Action classes respond to a user action, execute business 
logic (or call upon other classes to do that), and then return a result that tells Struts what view to render.</p>

<p>Struts 2 Action classes usually extend the <code class="language-plaintext highlighter-rouge">ActionSupport</code> class, which is provided by the Struts 2 framework. 
Class <code class="language-plaintext highlighter-rouge">ActionSupport</code> provides default implementations for the most common actions (e.g. execute, input) and also 
implements several useful Struts 2 interfaces. When your Action class extends class <code class="language-plaintext highlighter-rouge">ActionSupport</code> your class can either 
override the default implementations or inherit them.</p>

<p>If you examine class HelloWorldAction from tutorial <a href="using-tags">Using Struts 2 Tags</a> you’ll see that it extends 
the class <code class="language-plaintext highlighter-rouge">ActionSupport</code> and then overrides method <code class="language-plaintext highlighter-rouge">execute</code>.</p>

<p>The method <code class="language-plaintext highlighter-rouge">execute</code> is where we placed what we want this controller to do in response to the <code class="language-plaintext highlighter-rouge">hello.action</code>.</p>

<p><strong>Method execute of HelloWorldAction</strong></p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">public</span> <span class="nc">String</span> <span class="nf">execute</span><span class="o">()</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span>
    <span class="n">messageStore</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">MessageStore</span><span class="o">()</span> <span class="o">;</span>

    <span class="n">helloCount</span><span class="o">++;</span>

    <span class="k">return</span> <span class="no">SUCCESS</span><span class="o">;</span>
<span class="o">}</span>
</code></pre></div></div>
<blockquote>
  <p>Note that method execute declares it throws an Exception. We’ll cover in a later tutorial how to configure Struts 
to handle any Exceptions thrown from the Action classes methods.</p>
</blockquote>

<h2 id="processing-form-input-in-the-action-class">Processing Form Input In The Action Class</h2>

<p>One of the most common responsibilities of the Action class is to process user input on a form and then make 
the result of the processing available to the view page. To illustrate this responsibility, let’s say that 
on our view page, <code class="language-plaintext highlighter-rouge">HelloWorld.jsp</code>, we want to display a personal hello, such as “Hello Struts User Bruce.”</p>

<p>In the <a href="using-tags">Using Struts 2 Tags</a> example application we added a Struts 2 form to <code class="language-plaintext highlighter-rouge">index.jsp</code>.</p>

<p><strong>Struts 2 Form Tags</strong></p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;s:form</span> <span class="na">action=</span><span class="s">"hello"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;s:textfield</span> <span class="na">name=</span><span class="s">"userName"</span> <span class="na">label=</span><span class="s">"Your name"</span> <span class="nt">/&gt;</span>
    <span class="nt">&lt;s:submit</span> <span class="na">value=</span><span class="s">"Submit"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/s:form&gt;</span>
</code></pre></div></div>

<p>Make a note of the value of the name attribute for the Struts 2 textfield tag, which is userName. When the user 
clicks on the submit button for the above form, the action hello will be executed (<code class="language-plaintext highlighter-rouge">hello.action</code>). The form field 
values will be posted to the Struts 2 Action class (<code class="language-plaintext highlighter-rouge">HelloWorldAction</code>). The Action class may automatically receive 
those form field values provided it has a public set method that matches the form field name value.</p>

<p>So for the HelloWorldAction class to automatically receive the userName value it must have a public method setUserName 
(note the JavaBean convention discussed in tutorial <a href="hello-world-using-struts2">Hello World</a>).</p>

<p>For the example application associated with this tutorial, add the following Java code to class <code class="language-plaintext highlighter-rouge">HelloWorldAction</code>.</p>

<p><strong>Add userName to HelloWorldAction</strong></p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">private</span> <span class="nc">String</span> <span class="n">userName</span><span class="o">;</span>

<span class="kd">public</span> <span class="nc">String</span> <span class="nf">getUserName</span><span class="o">()</span> <span class="o">{</span>
    <span class="k">return</span> <span class="n">userName</span><span class="o">;</span>
<span class="o">}</span>

<span class="nd">@StrutsParameter</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setUserName</span><span class="o">(</span><span class="nc">String</span> <span class="n">userName</span><span class="o">)</span> <span class="o">{</span>
    <span class="k">this</span><span class="o">.</span><span class="na">userName</span> <span class="o">=</span> <span class="n">userName</span><span class="o">;</span>
<span class="o">}</span>
</code></pre></div></div>

<p>To personalize the MessageStore message (recall that class MessageStore is storing the message to display) 
add the following Java code to the HelloWorldAction’s execute method after the statement that instantiates 
the MessageStore object.</p>

<p><strong>Add userName value to message</strong></p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">if</span> <span class="o">(</span><span class="n">userName</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
    <span class="n">messageStore</span><span class="o">.</span><span class="na">setMessage</span><span class="o">(</span> <span class="n">messageStore</span><span class="o">.</span><span class="na">getMessage</span><span class="o">()</span> <span class="o">+</span> <span class="s">" "</span> <span class="o">+</span> <span class="n">userName</span><span class="o">);</span>
<span class="o">}</span>
</code></pre></div></div>

<p>Now build and run (<code class="language-plaintext highlighter-rouge">mvn jetty:run</code>) the application. Enter your name in the form and click the submit button. 
You should see the following page.</p>

<p><img src="attachments/coding_actions_form_submit_result.png" alt="coding_actions_form_submit_result.png" /></p>

<p>When the form is submitted, Struts will call any set methods of the HelloWorldAction class that match the form field 
names and are annotated with <code class="language-plaintext highlighter-rouge">@StrutsParameter</code>. So in this example method <code class="language-plaintext highlighter-rouge">setUserName</code> was called and passed the value
the user entered in the <code class="language-plaintext highlighter-rouge">userName</code> form field.</p>

<p>On the <code class="language-plaintext highlighter-rouge">index.jsp</code> we also have a Struts 2 action link (see tutorial <a href="using-tags">Using Struts 2 Tags</a>) that includes 
a query string parameter: <code class="language-plaintext highlighter-rouge">userName=Bruce+Phillips</code>. If you click on that link you should see the following result:</p>

<p><img src="attachments/coding_actions_link_with_param_result.png" alt="coding_actions_link_with_param_result.png" /></p>

<p>Since the query string parameter is <code class="language-plaintext highlighter-rouge">userName</code>, Struts passed the value of that parameter to the <code class="language-plaintext highlighter-rouge">setUserName</code> method.</p>

<p>On the view page, <code class="language-plaintext highlighter-rouge">HelloWorld.jsp</code>, you can also access the <code class="language-plaintext highlighter-rouge">userName</code> value by using the Struts 2 property tag 
(see tutorial <a href="using-tags">Using Struts 2 Tags</a>). Try showing just the <code class="language-plaintext highlighter-rouge">userName</code> value on the view page.</p>

<h2 id="summary">Summary</h2>

<p>This tutorial introduced you to how to code the Action class so it can process user input on a form or values in 
a query string parameter. If the form had numerous fields, it would be cumbersome to have a set method that matches 
up with each form field. So our next tutorial will cover how to integrate a model class, form fields in the view 
and form processing in the Action class.</p>

<table>
  <tbody>
    <tr>
      <td>Return to <a href="using-tags">Using Struts 2 Tags</a></td>
      <td>or</td>
      <td>onward to <a href="processing-forms">Processing Forms</a></td>
    </tr>
  </tbody>
</table>

  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation. All Rights Reserved.
  </div>
  <div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>

<script>!function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (!d.getElementById(id)) {
    js = d.createElement(s);
    js.id = id;
    js.src = "//platform.twitter.com/widgets.js";
    fjs.parentNode.insertBefore(js, fjs);
  }
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>

<div id="fb-root"></div>

<script>(function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


</body>
</html>
