The ActionForm Class

In this lesson you will learn about the ActionForm in detail.


 

Ads

Tutorials   
Struts 2.5.10.1 General Availability - released Login form in Struts2 version 2.3.16 Struts 2 Login Application Struts 2 version 2.3.16.3 released Struts 2 version 2.3.15.3 released Struts 2 Hello World Annotation Example Struts Roseindia Struts 2 Tutorial: Easy steps to learn Struts 2 Difference between Struts and Spring Apache Struts 2.3.15.2 launched to fix vulnerable Feature Struts2 Application in Eclipse: Running the application in Eclipse IDE Struts 2 Hello World Application using Eclipse Interceptors in Struts 2 Struts 2 Action Tag Struts 2 in Agile Development Environment Struts 2 UI Tags Generic Tags Creating own Interceptor What are Interceptors in Struts 2 and how do they work? Results Value Stack / OGNL Action in Struts 2 Framework Struts 2 Interceptors Struts 2.3.15.1 Maven - How to use Maven dependency of Struts 2.3.15.1? Download Struts 2.3.15.1 How Struts 2 Framework works? Architecture of Struts 2 Framework Features and Enhancements in Struts 2.3.15.1 Struts 2 Tutorials - Struts version 2.3.15.1 Struts 1 Tutorial and example programs Struts Tutorial What is Struts Struts Flow Diagram Step By Step Struts Tutorial Struts 2 Login Form Example Struts Video Tutorials Struts 2 Hello World Example Introduction to Struts 2 Framework Downloading and Installing Struts 2.3.8 In Struts What is Model? What is Struts? Download Struts What is Struts Framework? Struts Framework Latest Version of Struts Framework Downloading Struts Official example Struts 2.3.8 released with new features Struts 2.3.8 Tutorials and Examples Hibernate4 Struts Integration Struts2 Tiles Example
Ads

The ActionForm Class

     

In this lesson you will learn about the ActionForm in detail. I will show you a good example of ActionForm. This example will help you understand Struts in detail. We will create user interface to accept the address details and then validate the details on server side. On the successful validation of data, the data will be sent to model (the action class). In the Action class we can add the business processing logic but in this case we are just forwarding it to the sucess.jsp.  

What is ActionForm?
An ActionForm is a JavaBean that extends org.apache.struts.action.ActionForm. ActionForm maintains the session state for web application and the ActionForm object is automatically populated on the server side with data entered from a form on the client side.

We will first create the class AddressForm which extends the ActionForm class. Here is the code of the class:

AddressForm.java

package roseindia.net;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.*;


/**
@author Deepak Kumar
* @Web http://www.roseindia.net
* @Email [email protected]
*/

/**
 * Form bean for the Address Entry Screen.
 *
*/
public class AddressForm extends ActionForm
{
  private String name=null;
  private String address=null;
  private String emailAddress=null;

  public void setName(String name){
  this.name=name;
  }

  public String getName(){
  return this.name;
  }

  public void setAddress(String address){
  this.address=address;
  }

  public String getAddress(){
  return this.address;
  }


  public void setEmailAddress(String emailAddress){
  this.emailAddress=emailAddress;
  }

  public String getEmailAddress(){
  return this.emailAddress;
  }


  /**
 * Reset all properties to their default values.
 *
 @param mapping The mapping used to select this instance
 @param request The servlet request we are processing
 */
  public void reset(ActionMapping mapping, HttpServletRequest request) {
  this.name=null;
  this.address=null;
  this.emailAddress=null;
  }

  /**
 * Reset all properties to their default values.
 *
 @param mapping The mapping used to select this instance
 @param request The servlet request we are processing
 @return errors
 */
  public ActionErrors validate
  ActionMapping mapping, HttpServletRequest request ) {
  ActionErrors errors = new ActionErrors();
  
  ifgetName() == null || getName().length() ) {
  errors.add("name",new ActionMessage("error.name.required"));
  }
  ifgetAddress() == null || getAddress().length() ) {
  errors.add("address",new ActionMessage("error.address.required"));
  }
  ifgetEmailAddress() == null || getEmailAddress().length() ) {
  errors.add("emailaddress",new ActionMessage("error.emailaddress.required"));
  }

  return errors;
  }

}

The above class populates the Address Form data and validates it. The validate() method is used to validate the inputs. If any or all of the fields on the form are blank, error messages are added to the ActionMapping object.  Note that we are using ActionMessage class, ActionError is now deprecated and will be removed in next version.

Now we will create the Action class which is the model part of the application. Our action class simply forwards the request the Success.jsp. Here is the code of the AddressAction class:

AddressAction.java

package roseindia.net;

/**
@author Deepak Kumar
* @Web http://www.roseindia.net
* @Email [email protected]
*/

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

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class AddressAction extends Action
{
  public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse responsethrows Exception{
  return mapping.findForward("success");
  }
}

Now we have to create an entry for form bean in the struts-config.xml. Add the following lines in the struts-config.xml file:

<form-bean
name="AddressForm"
type="roseindia.net.AddressForm"/>

Add the following line in the struts-config.xml file for handling the action "/Address.do":

<action
   path="/Address"
   type="roseindia.net.AddressAction"
   name="AddressForm"
   scope="request"
   validate="true"
   input="/pages/Address.jsp">
  <forward name="success" path="/pages/success.jsp"/>
</action>

Now create Address.jsp, which is our form for entering the address details. Code for Address.jsp is as follows:

Address.jsp

   <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
   <%@ taglib uri="/tags/struts-html" prefix="html" %>
  
   <html:html locale="true">

   <head>

   <title><bean:message key="welcome.title"/></title>

   <html:base/>

   </head>

   <body bgcolor="white">

   <html:form action="/Address">

   <html:errors/>

   <table>

        <tr>

          <td align="center" colspan="2">
		<font size="4">Please Enter the Following Details</font>
 	</tr>
	<tr>
          <td align="right">
            Name
          </td>
          <td align="left">
            <html:text property="name" size="30" maxlength="30"/>
          </td>
        </tr>
        <tr>
          <td align="right">
            Address
          </td>
          <td align="left">
            <html:text property="address" size="30" maxlength="30"/>
          </td>
        </tr>

        <tr>
          <td align="right">
            E-mail address
          </td>
          <td align="left">
            <html:text property="emailAddress" size="30" maxlength="30"/>
          </td>
        </tr>
	<tr>
          <td align="right">
            <html:submit>Save</html:submit>
          </td>
          <td align="left">
            <html:cancel>Cancel</html:cancel>
          </td>
        </tr>
  </table>
   </html:form>
   </body>
   </html:html>

User enter the values in the form and click on the submit form. Form  validation is done on the server side and error message is displays on the jsp page. To display the error on the jsp page <html:errors/> tag is used. The <html:errors/> tag displays all the errors in one go.  To create text box <html:text .../> is used in jsp page. 

e.g.

<html:text property="address" size="30" maxlength="30"/>

Above tag creates text box for entering the address. The address is retrieved from and later stored in the property named address in the form-bean. The tag <html:submit>Save</html:submit> creates the submit button and the tag <html:cancel>Cancel</html:cancel> is used to create the Cancel button.

Add the following line in the index.jsp to create a link for testing the Address.jsp form:

<html:link page="/pages/Address.jsp">Test the Address Form</html:link>

Build the application and click on the Test the Address Form link on the index page to test the newly created screen. You should see the following screen.

In this lesson you learned how to create data entry form using struts, validate and finally send process the business logic in the model part of the struts.

 

     

Advertisements

Ads
Share on Google+Share on Google+

The ActionForm Class

Posted on: February 12, 2008 If you enjoyed this post then why not add us on Google+? Add us to your Circles

Advertisements

 

Discuss: The ActionForm Class   View All Comments

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments:4
Tomek
January 19, 2013
wYmkVMhZINt

Reaidng this makes my decisions easier than taking candy from a baby.
mansi
September 4, 2012
thanks

nice article. thanks!
Praveen
December 1, 2012
Struts

good matter of the struts, plz post these type of topics for all students
Gustavo Amaro
May 30, 2014
Sugestion

Hi, I'm loving this tutorial, very complete... Can I do a sugestion? Replace the validate method (Form) by this: public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if (getName() == null || getName().length() < 1) { errors.add("name", new ActionMessage("errors.required", "Name")); } if (getAddress() == null || getAddress().length() < 1) { errors.add("address", new ActionMessage("errors.required", "Address")); } if (getEmailAddress() == null || getEmailAddress().length() < 1) { errors.add("emailaddress", new ActionMessage("errors.required", "Email Address")); } return errors; } See ya :D

Ads

 

Ads