Add Spring MVC form and binding example
This commit is contained in:
parent
b846bcc35e
commit
5b738313e8
|
@ -0,0 +1,99 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<version>0.1-SNAPSHOT</version>
|
||||||
|
<artifactId>spring-mvc-forms</artifactId>
|
||||||
|
|
||||||
|
<name>spring-mvc-forms</name>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-webmvc</artifactId>
|
||||||
|
<version>${springframework.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.servlet</groupId>
|
||||||
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
|
<version>${javax.servlet-api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.servlet.jsp</groupId>
|
||||||
|
<artifactId>javax.servlet.jsp-api</artifactId>
|
||||||
|
<version>${javax.servlet.jsp-api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.servlet</groupId>
|
||||||
|
<artifactId>jstl</artifactId>
|
||||||
|
<version>${jstl.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate</groupId>
|
||||||
|
<artifactId>hibernate-validator</artifactId>
|
||||||
|
<version>${hibernate-validator.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
<profiles>
|
||||||
|
<!-- Local -->
|
||||||
|
<profile>
|
||||||
|
<id>spring-mvc-forms</id>
|
||||||
|
<activation>
|
||||||
|
<activeByDefault>true</activeByDefault>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>${maven-compiler-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<source>${maven-compiler-plugin.source}</source>
|
||||||
|
<target>${maven-compiler-plugin.source}</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<version>${maven-war-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<warSourceDirectory>src/main/webapp</warSourceDirectory>
|
||||||
|
<warName>spring-mvc-forms</warName>
|
||||||
|
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||||
|
<outputDirectory>${deploy-path}</outputDirectory>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
</pluginManagement>
|
||||||
|
<finalName>spring-mvc-forms</finalName>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<springframework.version>4.0.6.RELEASE</springframework.version>
|
||||||
|
<maven-war-plugin.version>2.4</maven-war-plugin.version>
|
||||||
|
<jstl.version>1.2</jstl.version>
|
||||||
|
<javax.servlet.jsp-api.version>2.3.1</javax.servlet.jsp-api.version>
|
||||||
|
<javax.servlet-api.version>3.1.0</javax.servlet-api.version>
|
||||||
|
<maven-compiler-plugin.version>3.5.1</maven-compiler-plugin.version>
|
||||||
|
<maven-compiler-plugin.source>1.8</maven-compiler-plugin.source>
|
||||||
|
<hibernate-validator.version>5.1.1.Final</hibernate-validator.version>
|
||||||
|
<deploy-path>enter-location-of-server</deploy-path>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.baeldung.springmvcforms.configuration;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
|
||||||
|
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
||||||
|
import org.springframework.web.servlet.view.InternalResourceViewResolver;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebMvc
|
||||||
|
@ComponentScan(basePackages = "com.baeldung.springmvcforms")
|
||||||
|
class ApplicationConfiguration extends WebMvcConfigurerAdapter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
|
||||||
|
configurer.enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public InternalResourceViewResolver jspViewResolver() {
|
||||||
|
InternalResourceViewResolver bean = new InternalResourceViewResolver();
|
||||||
|
bean.setPrefix("/WEB-INF/views/");
|
||||||
|
bean.setSuffix(".jsp");
|
||||||
|
return bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.baeldung.springmvcforms.configuration;
|
||||||
|
|
||||||
|
import org.springframework.web.WebApplicationInitializer;
|
||||||
|
import org.springframework.web.context.ContextLoaderListener;
|
||||||
|
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
||||||
|
import org.springframework.web.servlet.DispatcherServlet;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.ServletRegistration;
|
||||||
|
|
||||||
|
public class WebInitializer implements WebApplicationInitializer {
|
||||||
|
|
||||||
|
public void onStartup(ServletContext container) throws ServletException {
|
||||||
|
|
||||||
|
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
|
||||||
|
ctx.register(ApplicationConfiguration.class);
|
||||||
|
ctx.setServletContext(container);
|
||||||
|
|
||||||
|
// Manage the lifecycle of the root application context
|
||||||
|
container.addListener(new ContextLoaderListener(ctx));
|
||||||
|
|
||||||
|
ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));
|
||||||
|
|
||||||
|
servlet.setLoadOnStartup(1);
|
||||||
|
servlet.addMapping("/");
|
||||||
|
}
|
||||||
|
// @Override
|
||||||
|
// public void onStartup(ServletContext container) {
|
||||||
|
// // Create the 'root' Spring application context
|
||||||
|
// AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
|
||||||
|
// rootContext.register(ServiceConfig.class, JPAConfig.class, SecurityConfig.class);
|
||||||
|
//
|
||||||
|
// // Manage the lifecycle of the root application context
|
||||||
|
// container.addListener(new ContextLoaderListener(rootContext));
|
||||||
|
//
|
||||||
|
// // Create the dispatcher servlet's Spring application context
|
||||||
|
// AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext();
|
||||||
|
// dispatcherServlet.register(MvcConfig.class);
|
||||||
|
//
|
||||||
|
// // Register and map the dispatcher servlet
|
||||||
|
// ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherServlet));
|
||||||
|
// dispatcher.setLoadOnStartup(1);
|
||||||
|
// dispatcher.addMapping("/");
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.baeldung.springmvcforms.controller;
|
||||||
|
|
||||||
|
import com.baeldung.springmvcforms.domain.Employee;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class EmployeeController {
|
||||||
|
|
||||||
|
Map<Long, Employee> employeeMap = new HashMap<>();
|
||||||
|
|
||||||
|
@RequestMapping(value = "/employee", method = RequestMethod.GET)
|
||||||
|
public ModelAndView showForm() {
|
||||||
|
return new ModelAndView("employeeHome", "employee", new Employee());
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/employee/{Id}", produces = { "application/json", "application/xml" }, method = RequestMethod.GET)
|
||||||
|
public @ResponseBody Employee getEmployeeById(@PathVariable final long Id) {
|
||||||
|
return employeeMap.get(Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
|
||||||
|
public String submit(@Valid @ModelAttribute("employee") final Employee employee, final BindingResult result, final ModelMap model) {
|
||||||
|
if (result.hasErrors()) {
|
||||||
|
return "error";
|
||||||
|
}
|
||||||
|
model.addAttribute("name", employee.getName());
|
||||||
|
model.addAttribute("contactNumber", employee.getContactNumber());
|
||||||
|
model.addAttribute("id", employee.getId());
|
||||||
|
employeeMap.put(employee.getId(), employee);
|
||||||
|
return "employeeView";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.baeldung.springmvcforms.domain;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
|
|
||||||
|
public class Employee {
|
||||||
|
|
||||||
|
private long id;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Size(min = 5)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Size(min = 7)
|
||||||
|
private String contactNumber;
|
||||||
|
|
||||||
|
public Employee() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(final String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(final long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContactNumber() {
|
||||||
|
return contactNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContactNumber(final String contactNumber) {
|
||||||
|
this.contactNumber = contactNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
|
||||||
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
|
<title>Form Example - Register an Employee</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h3>Welcome, Enter The Employee Details</h3>
|
||||||
|
|
||||||
|
<form:form method="POST" action="${pageContext.request.contextPath}/addEmployee" modelAttribute="employee">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><form:label path="name">Name</form:label></td>
|
||||||
|
<td><form:input path="name" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><form:label path="id">Id</form:label></td>
|
||||||
|
<td><form:input path="id" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><form:label path="contactNumber">Contact Number</form:label></td>
|
||||||
|
<td><form:input path="contactNumber" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="submit" value="Submit" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form:form>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Spring MVC Form Handling</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h2>Submitted Employee Information</h2>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>Name :</td>
|
||||||
|
<td>${name}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>ID :</td>
|
||||||
|
<td>${id}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Contact Number :</td>
|
||||||
|
<td>${contactNumber}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<%@ 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>SpringMVCExample</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h3>Pleas enter the correct details</h3>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><a href="employee">Retry</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
Loading…
Reference in New Issue