By
using @ModelAttribute annotation, you can bind the request parameters to a java
object.
@RequestMapping(value
= "getEmpDetails", method = RequestMethod.POST)
public
ModelAndView getWelcomeMessage(@ModelAttribute Employee emp) {
emp.setId(getRandomNumber());
String msg = "Details of the
employee";
ModelAndView modelAndView = new
ModelAndView("employeeDetails");
modelAndView.addObject("message",
msg);
modelAndView.addObject("employeeDetails",
emp);
return modelAndView;
}
As
you notify above example, I am assigning all the request parameters to the
model object emp.
Find
the below working application.
package com.sample.myApp.controllers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import com.sample.myApp.model.Employee; @Controller public class HelloWorldController { @RequestMapping(value = "getEmpDetails", method = RequestMethod.POST) public ModelAndView getWelcomeMessage(@ModelAttribute Employee emp) { emp.setId(getRandomNumber()); String msg = "Details of the employee"; ModelAndView modelAndView = new ModelAndView("employeeDetails"); modelAndView.addObject("message", msg); modelAndView.addObject("employeeDetails", emp); return modelAndView; } private static int getRandomNumber() { return new java.util.Random().nextInt(); } }
Address.java
package com.sample.myApp.model; public class Address { private String city; private String country; private String street; private String houseNumber; public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getHouseNumber() { return houseNumber; } public void setHouseNumber(String houseNumber) { this.houseNumber = houseNumber; } }
Employee.java
package com.sample.myApp.model; public class Employee { private int id; private String firstName; private String lastName; private Address address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
Create
employeeDetails.jsp file under WEB-INF/jsp folder.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Hello World Spring Web MVC</title> </head> <body> <table> <thead>${message}</thead> <tr> <td>First Name</td> <td>${employeeDetails.firstName}</td> </tr> <tr> <td>Last Name</td> <td>${employeeDetails.lastName}</td> </tr> <tr> <td>Address</td> <td>${employeeDetails.address.city},${employeeDetails.address.country}, ${employeeDetails.address.street}, ${employeeDetails.address.houseNumber}</td> </tr> </table> </body> </html>
Create
web.xml, HelloWorld-servlet.xml files under WEB-INF folder.
web.xml
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring MVC Hello WorldApplication</display-name> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
HelloWorld-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.sample.myApp" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
Create
index.jsp file under webapp folder.
<html> <head> <title>User Information Page</title> </head> <div id="login_form"> <form method="post" action="/springdemo/getEmpDetails" id="f1"> <table> <tr> <td>firstName :</td> <td><input type="text" name="firstName" value="" /></td> </tr> <tr> <td>lastName :</td> <td><input type="text" name="lastName" value="" /></td> </tr> <tr> <td>city :</td> <td><input type="text" name="address.city" value="" /></td> </tr> <tr> <td>country :</td> <td><input type="text" name="address.country" value="" /></td> </tr> <tr> <td>street :</td> <td><input type="text" name="address.street" value="" /></td> </tr> <tr> <td>house number :</td> <td><input type="text" name="address.houseNumber" value="" /></td> </tr> <tr> <td><input type="submit" name="submit" value="submit" style="font-size: 18px;" /></td> </tr> </table> </form> </div> </html>
Total
project structure looks like below.
Run
the application on server. It opens below form.
@RequestMapping(value
= "getEmpDetails", method = RequestMethod.POST)
public
ModelAndView getWelcomeMessage(@ModelAttribute Employee emp) {
modelAndView.addObject("employeeDetails",
emp);
return modelAndView;
}
You
can also rewrite the above snippet like below.
@RequestMapping(value
= "getEmpDetails", method = RequestMethod.POST)
public
ModelAndView getWelcomeMessage(@ModelAttribute("employeeDetails")
Employee emp) {
return modelAndView;
}
No comments:
Post a Comment