Learn Spring Fast- Form Processing

By Barry Nirmal
In this step we shall create a form to add a new employee to the employee list.
We need a method in EmployeeManager to create a new employee.

Modify EmployeeManager class



public Employee  createEmployee (Employee  e) {
	Employee  emp  = new Employee ();
	emp.setId ((long) empList.size() + 1);
	emp.setJob (e.getJob ());
	emp.setName (e.getName ());
 
	empList.add(emp);
 
	return emp;
}


Create JobManager class


package springfast.service;
 
import java.util.ArrayList;
import java.util.List;
 
import springfast.model.Job;
 
public class JobManager {
 
	private static List jobList;
 
	static {
		Job job1 = new Job();
		job1.setId((long)1);
		job1.setTitle ("Programmer");
		job1.setSalary ( new Long("10000"));		
 
		Job job2 = new Job();
		job2.setId((long)2);
		job2.setTitle ("Manager");
		job2.setSalary ( new Long ( "50000" ) ) ;		
 
		jobList = new ArrayList();
		jobList.add(job1);
		jobList.add(job2);		
	}
 
	public List getJobList() {
		return jobList;
	}	
 
	public Job  getJobById (Long id) {
		for (Job j : jobList) {
			if (j.getId().equals(id))
				return j;
		}
		return null;
	}
}

Create Controller

In 'WEB-INF/springfast-servlet.xml', we must declare a new URL and its Controller:

quot;springfast.web.NewEmployeeController">
    <property name="commandClass" value="sprinfast.model.Employee"/>
    <property name="formView" value="newEmployee"/>
    <property name="successView" value="list_employees.html"/>
</bean>


We must now create this Controller: 'WEB-INF/src/springmvc/web/NewEmployeeController.java':



package springfast.web;
 
import java.util.HashMap;
import java.util.Map;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView;
 
import springmvc.model.Job;
import springmvc.model.Employee;
import springmvc.service.JobManager;
import springmvc.service.EmployeeManager;
 

public class NewEmployeeController extends SimpleFormController {
 
    @Override
    protected Object formBackingObject(HttpServletRequest request) throws Exception {
    	Employee defaultEmployee = new Employee();
    	defaultEmployee.setName ("new employee name");
    	return defaultEmployee;
    }
 
    @Override
    protected Map referenceData(HttpServletRequest request) throws Exception {
    	Map dataMap = new HashMap();
    	JobManager jobManager = new JobManager();
    	dataMap.put("jobList", jobManager.getJobList());
    	return dataMap;
    }
 
    @Override
    protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
    	binder.setDisallowedFields(new String[] {"job"});
 
    	Employee employee = (Employee)binder.getTarget();
 
    	// set employee's job from request parameter job id
    	JobManager jobManager = new JobManager();    	
    	Long jobId = null;
    	try {
	    	jobId = Long.parseLong(request.getParameter("job"));
		} catch (Exception e) {}		
		if (jobId != null) {
			Job job = jobManager.getJobById(jobId);
			employee.setJob (job);
		}    
    }
 
    @Override
    public ModelAndView onSubmit(Object command) throws ServletException {
    	EmployeeManager empManager = new EmployeeManager();
    	empManager.createEmployee ((Employee)command);
 
    	return new ModelAndView(new RedirectView(getSuccessView()));
    }
 
}

Create View

Let's now create the view 'jsp/newEmployee.jsp':
 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
 
<html>
<body>
	<h1>New Employee</h1>
 
	<form:form method="post">
 
		Job<br />
		<form:select path="job">
		   <form:options items="${jobList}" itemLabel="name" itemValue="id" />
		</form:select>
		<br /><br />
 
		Name <br />
		<form:input path="name"/><br /><br />
 
 
		<input type="submit" value="Submit">
 
	</form:form>
</body>
</html>

Build and Test

Build (ant), relaunch Tomcat and check it's working:

http://localhost:8080/springfast/new_employee.html

You will see the following result:

This proves that our MVC application works like a charm. We can now relax and have a cup of coffee, or tea but no alcohol please.


Click here to download the "springfast" folder that the author created and tested.
Back to Menu

(C) WebTech Enterprises, Inc. (All rights reserved)
Custom Search

Click here to send us your feedback.