The ActionForm Class - Struts - Part - 3
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:
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(); if( getName() == null || getName().length() < 1 ) { errors.add("name",new ActionMessage("error.name.required")); } if( getAddress() == null || getAddress().length() < 1 ) { errors.add("address",new ActionMessage("error.address.required")); } if( getEmailAddress() == null || getEmailAddress().length() < 1 ) { 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 response) throws 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"/>
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>
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>
<%@ 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.
I hope all goes well! Look forward to seeing more Java tutorials from me in the future.
Comments
Post a Comment