Frameworks| Hibernate| Struts| JSF| JavaFX| Ajax| Spring| DOJO| JDO| iBatis| Questions?

 

 

 

 

 

 

 

 

 

 

 

 

 

Search Tutorials

Latest Questions
Comments
 
The Struts ActionForm Class 
 

The Struts ActionForm Class 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

 

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 roseindia_net@yahoo.com
*/

/**
 * 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 roseindia_net@yahoo.com
*/

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.

 

                         

» View all related tutorials
Related Tags: c exception time io scope multiple type request cookie default ip page value tag name attribute this oo row define

Leave your comment:

Name:

Email:

URL:

Title:

Comments:


Enter Code:

Audio Version
Reload Image
 

Note: Emails will not be visible or used in any way, and are not required. Please keep comments relevant. Any content deemed inappropriate or offensive may be edited and/or deleted.

No HTML code is allowed. Line breaks will be converted automatically. URLs will be auto-linked. Please use BBCode to format your text.

Add This Tutorial To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 

Current Comments

103 comments so far (
post your own) View All Comments Latest 10 Comments:

Hi,

For those who are looking to use the validate() method properly, dont forget that you have to add the error message to the applicationresources.properties file.

in this case it would be something like:

error.name.required=<li>Name Field is Required, Try Again</li>

Posted by AP on Friday, 07.10.09 @ 23:18pm | #89232

it is very nice

Posted by jax on Thursday, 04.9.09 @ 12:40pm | #86674

hello
thinks for the tutorials.
here you say :"Now we will create the Action class which is the model part of the application" and in the http://www.roseindia.net/struts/understandingstruts_action_class.shtml" you sau :"Action class acts as wrapper around the business logic and provides an inteface to the application's Model layer. It acts as glue between the View and Model layer"!!!
in any way thinks for the tutorial

Posted by Aymen on Wednesday, 04.8.09 @ 18:56pm | #86654


It would be more helpful if
coding for database connectivity provided in the same chapter as most of the people who use this tutorial familier with JSP and DB connectivity.
Its a wonderful tutorial to master Struts.

Posted by Abhishek Mohan.k on Wednesday, 12.10.08 @ 23:57pm | #82619

I am a Struts programmer at Chennai and this site is so helpful that i cant describe more.

This site is really really wonderful

Thanks.Keep up the good work

Posted by Chandra on Monday, 12.1.08 @ 05:39am | #82232

<action
path="/Address"
in the following example you have been using input="/pages/Address.jsp"
instead ot that can i use input="/pages.do"

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

Posted by Vipul Khalasi on Saturday, 11.29.08 @ 03:59am | #82171

Hi,

Suppose i use an image like <html:image src="./images/email/cancelbutton.jpg"/> in the place of the <html:cancel>, the validate method is still being called. How can I bypass the validate method in this case?

Posted by Dharan on Thursday, 05.29.08 @ 12:12pm | #61331

hi
i want simple example for jsf in jboss with eclips so please give me replay soon.

Posted by agiurpadeep on Tuesday, 04.22.08 @ 10:17am | #57471

I am interested to participant in this site

Posted by Madhu on Wednesday, 03.19.08 @ 13:04pm | #53297

when i was execute above example its correct for address.jsp when i was click in the save button it is not goes to success.jsp and

server showing error for unable to read to ther 'success'.in last line pls tell me the answer

Posted by Tikam on Saturday, 02.23.08 @ 13:29pm | #49586

Training Courses
Tell A Friend
Your Friend Name
Software Solutions
Least Viewed
Most Rated
Recently Viewed
Search Tutorials

 

 
 

Home | JSP | EJB | JDBC | Java Servlets | WAP  | Free JSP Hosting  | Search Engine | News Archive | Jboss 3.0 tutorial | Free Linux CD's | Forum | Blogs

About Us | Advertising On RoseIndia.net  | Site Map

India News

Indian Software Development Company | iPhone Development Company in India | Flex Development Company in India | Java Training Delhi | Java Training at Noida |

Send your comments, Suggestions or Queries regarding this site at roseindia_net@yahoo.com.

Copyright © 2008. All rights reserved.