Automatic Form Validation
Previous | Home | Next |
Struts Frameworks provide validation for form input fields values. When user input data and request is submitted then at server side controller receive the data and check into subclass of ActionForm .You have choose to override the validate() methods into your subclass ActionForm .Its depends on you.
validate (ActionMapping mapping, HttpServletRequest request) methods has been overridden into subclass of ActionForm then controller servlet call the validate method before Action class's execute methods.
If validate methods return null or zero -length of ActionErrors instance then controller process execute methods
else
if any error then return an ActionErrors instance which contains ActionMessage's, ActionMessage are classes that contain the error message keys (into the application's MessageResources bundle) that should be displayed at user side. The controller servlet will store this array as a request attribute suitable for use by the <html:errors> tag, and will forward control back to the input form.
if validate() method doesn't overridden then null will return by defaults.and controller process next step. mean call execute methods and populate data into subclass of ActionForm.
Directory Structure of ValidationExample in Struts 1.3 Using MyEclipse IDEindex.jsp<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <html> <head> <title><bean:message key="label.title"/></title> </head> <div style="color: red;"> <html:errors/> </div> <h3><bean:message key="label.header"/></h3> <html:form action="/validationAction"> <bean:message key="label.name"/>: <html:text property="name" name="validationForm"/><br/> <bean:message key="label.password"/>: <html:text property="password" name="validationForm"/><br/> <br/> <html:submit><bean:message key="label.submit"/></html:submit> <html:reset><bean:message key="label.reset"/></html:reset> </html:form> </html>web.xml<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Maven Struts Examples</display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value> /WEB-INF/struts-config.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>struts-config.xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans > <form-bean name="validationForm" type="org.r4r.struts.ValidationForm"/> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings > <action attribute="validationForm" input="/index.jsp" name="validationForm" path="/validationAction" scope="request" type="org.r4r.struts.ValidAction" cancellable="true"> <forward name="success" path="/success.jsp" /> </action> </action-mappings> <message-resources parameter="org.r4r.struts.ApplicationResources" /> </struts-config>ValidationForm.javapackage org.r4r.struts; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; @SuppressWarnings("serial") public class ValidationForm extends ActionForm { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if (name == null || name.length() < 1) { errors.add("name", new ActionMessage("error.name.required")); } if (password == null || password.length() < 1) { errors.add("password", new ActionMessage("error.password.required")); } return errors; } }ValidationAction.javapackage org.r4r.struts; 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 ValidAction extends Action { public ActionForward execute ( ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception{ @SuppressWarnings("unused") ValidationForm validationForm = (ValidationForm) form; return mapping.findForward("success"); } }ApplicationResources.properties#label message label.title=Struts Validation Example label.header=Struts Validation Example label.name = User Name label.password = Password label.submit = Submit label.reset = Reset error.name.required= Name is required<br/> error.password.required= Password is requiredsuccess.jsp<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <html> <head> <title><bean:message key="label.title"/></title> </head> <body> <h3><bean:message key="label.header"/></h3> <h4>Welcome , <bean:write name="validationForm" property="name"/></h4> </body> </html>Output
Previous | Home | Next |