Using a Workflow Form in Validator Framework

Using a Workflow Form in Validator Framework

Previous Home Next

 

In this Chapter,We will use a Workflow Form in Validator Framework. Workflow form in validator framwork are logical groupings of actions following each other in a rather simple, mostly linear or circular way.

 
You can used the page attribute of the field element.When We will working to make the page attribute,the validatorForm includes a page property.You must include the current page in your jsp input pages with the hidden field that corresponds to the page property.

The following step process :-

1. change the action to subclass DispatchAction.
2. Create 2 Action Mapping entries into the struts-config.xml file
3  Create two method with the same signature as the execute method in action class
4. Add the method field to the ActionForm class.
5. Create two jsp pages ,one page for each step.
6. Ensure each input jsp page passes the page property.
7. Ensure the first jsp page also passes which method to invoke on second method.
8. modify the validation.xml file,add the page attribute for the field in the form.

Directory Structure of MessagesTagExample in Struts 1.3 Using MyEclipse IDE




index.jsp

<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<html>
<head>
<title>Struts html:messages tag example</title>
</head>
<body>
<h3>Struts html:messages tag example</h3>
<div style="color: red;">
<html:messages id="errorName" property="name">
	<bean:write name="errorName" />
</html:messages><br/>
<html:messages id="errorPassword" property="password">
	<bean:write name="errorPassword" />
</html:messages>
</div>
<html:form action="/messagesAction">
<bean:message key="label.name"/>:
<html:text property="name" name="messagesForm"/><br/>
<bean:message key="label.password"/>:
<html:text property="password" name="messagesForm"/><br/>
<br/>
<html:submit><bean:message key="label.submit" /></html:submit>
<html:reset><bean:message key="label.reset" /></html:reset>
</html:form>
</body>
</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="messagesForm" type="org.r4r.struts.MessagesForm"/>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings >
  <action path="/messages" type="org.apache.struts.actions.ForwardAction" parameter="/index.jsp"/>
  <action path="/messagesAction" type="org.r4r.struts.MessagesAction" name="messagesForm" input="/index.jsp">	
  <forward name="success" path="/success.jsp"/>
  </action>
  </action-mappings>
  <message-resources parameter="org.r4r.struts.ApplicationResources" />
</struts-config>

MessagesForm.java

package 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 MessagesForm 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;
		}
}

MessagesAction.java

package 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 MessagesAction extends Action {
	public ActionForward execute(ActionMapping mapping,ActionForm form,
		HttpServletRequest request,HttpServletResponse response) throws Exception{
		@SuppressWarnings("unused")
		MessagesForm passwordForm=(MessagesForm)form;
		return mapping.findForward("success");
	}

}

ApplicationResources.properties

#label message
label.name = User Name 
label.password = Password
label.submit = Submit
label.reset = Reset
error.name.required= Name is required
error.password.required= Password is required

success.jsp

<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
 
<html>
<head>
<title>Struts html:messages tag example</title>
</head>
<body>
<h3>Struts html:messages tag Example</h3>
<h4>Welcome , <bean:write name="messagesForm" property="name" /></h4>
</body>
</html>

Output



Previous Home Next