spring-mvc-matrix-variables - manually merging
This commit is contained in:
parent
a5bde90d40
commit
70322e1a44
|
@ -194,7 +194,6 @@
|
|||
<artifactId>cargo-maven2-plugin</artifactId>
|
||||
<version>${cargo-maven2-plugin.version}</version>
|
||||
<configuration>
|
||||
<wait>true</wait>
|
||||
<container>
|
||||
<containerId>jetty8x</containerId>
|
||||
<type>embedded</type>
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
package com.baeldung.model;
|
||||
|
||||
public class Company {
|
||||
|
||||
private long id;
|
||||
private String name;
|
||||
|
||||
public Company() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Company(final long id, final String name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Company [id=" + id + ", name=" + name + "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -8,15 +8,17 @@ public class Employee {
|
|||
private long id;
|
||||
private String name;
|
||||
private String contactNumber;
|
||||
private String workingArea;
|
||||
|
||||
public Employee() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Employee(final long id, final String name, final String contactNumber) {
|
||||
public Employee(final long id, final String name, final String contactNumber, final String workingArea) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.contactNumber = contactNumber;
|
||||
this.workingArea = workingArea;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
|
@ -43,9 +45,17 @@ public class Employee {
|
|||
this.contactNumber = contactNumber;
|
||||
}
|
||||
|
||||
public String getWorkingArea() {
|
||||
return workingArea;
|
||||
}
|
||||
|
||||
public void setWorkingArea(final String workingArea) {
|
||||
this.workingArea = workingArea;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Employee [id=" + id + ", name=" + name + ", contactNumber=" + contactNumber + "]";
|
||||
return "Employee [id=" + id + ", name=" + name + ", contactNumber=" + contactNumber + ", workingArea=" + workingArea + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,12 +13,14 @@ import org.springframework.http.converter.HttpMessageConverter;
|
|||
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
|
||||
import org.springframework.web.servlet.ViewResolver;
|
||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
||||
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
|
||||
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
||||
import org.springframework.web.servlet.view.InternalResourceViewResolver;
|
||||
import org.springframework.web.servlet.view.JstlView;
|
||||
import org.springframework.web.servlet.view.ResourceBundleViewResolver;
|
||||
import org.springframework.web.servlet.view.XmlViewResolver;
|
||||
import org.springframework.web.util.UrlPathHelper;
|
||||
|
||||
@Configuration
|
||||
@EnableWebMvc
|
||||
|
@ -96,4 +98,12 @@ public class WebConfig extends WebMvcConfigurerAdapter {
|
|||
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configurePathMatch(final PathMatchConfigurer configurer) {
|
||||
final UrlPathHelper urlPathHelper = new UrlPathHelper();
|
||||
urlPathHelper.setRemoveSemicolonContent(false);
|
||||
|
||||
configurer.setUrlPathHelper(urlPathHelper);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package com.baeldung.web.controller;
|
||||
|
||||
import com.baeldung.model.Company;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
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 java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Controller
|
||||
public class CompanyController {
|
||||
|
||||
Map<Long, Company> companyMap = new HashMap<>();
|
||||
|
||||
@RequestMapping(value = "/company", method = RequestMethod.GET)
|
||||
public ModelAndView showForm() {
|
||||
return new ModelAndView("companyHome", "company", new Company());
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/company/{Id}", produces = { "application/json", "application/xml" }, method = RequestMethod.GET)
|
||||
public @ResponseBody Company getCompanyById(@PathVariable final long Id) {
|
||||
return companyMap.get(Id);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/addCompany", method = RequestMethod.POST)
|
||||
public String submit(@ModelAttribute("company") final Company company, final BindingResult result, final ModelMap model) {
|
||||
if (result.hasErrors()) {
|
||||
return "error";
|
||||
}
|
||||
model.addAttribute("name", company.getName());
|
||||
model.addAttribute("id", company.getId());
|
||||
|
||||
companyMap.put(company.getId(), company);
|
||||
|
||||
return "companyView";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/companyEmployee/{company}/employeeData/{employee}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, String>> getEmployeeDataFromCompany(@MatrixVariable(pathVar = "employee") final Map<String, String> matrixVars) {
|
||||
return new ResponseEntity<>(matrixVars, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/companyData/{company}/employeeData/{employee}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, String>> getCompanyName(@MatrixVariable(value = "name", pathVar = "company") final String name) {
|
||||
final Map<String, String> result = new HashMap<String, String>();
|
||||
result.put("name", name);
|
||||
return new ResponseEntity<>(result, HttpStatus.OK);
|
||||
}
|
||||
}
|
|
@ -1,35 +1,40 @@
|
|||
package com.baeldung.web.controller;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.baeldung.model.Employee;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import com.baeldung.model.Employee;
|
||||
import java.util.*;
|
||||
|
||||
@SessionAttributes("employees")
|
||||
@Controller
|
||||
@ControllerAdvice
|
||||
public class EmployeeController {
|
||||
|
||||
Map<Long, Employee> employeeMap = new HashMap<>();
|
||||
|
||||
@ModelAttribute("employees")
|
||||
public void initEmployees() {
|
||||
employeeMap.put(1L, new Employee(1L, "John", "223334411", "rh"));
|
||||
employeeMap.put(2L, new Employee(2L, "Peter", "22001543", "informatics"));
|
||||
employeeMap.put(3L, new Employee(3L, "Mike", "223334411", "admin"));
|
||||
}
|
||||
|
||||
@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) {
|
||||
@RequestMapping(value = "/employee/{Id}", produces = {"application/json", "application/xml"}, method = RequestMethod.GET)
|
||||
public
|
||||
@ResponseBody
|
||||
Employee getEmployeeById(@PathVariable final long Id) {
|
||||
return employeeMap.get(Id);
|
||||
}
|
||||
|
||||
|
@ -40,6 +45,7 @@ public class EmployeeController {
|
|||
}
|
||||
model.addAttribute("name", employee.getName());
|
||||
model.addAttribute("contactNumber", employee.getContactNumber());
|
||||
model.addAttribute("workingArea", employee.getWorkingArea());
|
||||
model.addAttribute("id", employee.getId());
|
||||
|
||||
employeeMap.put(employee.getId(), employee);
|
||||
|
@ -52,4 +58,53 @@ public class EmployeeController {
|
|||
model.addAttribute("msg", "Welcome to the Netherlands!");
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/employees/{name}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public ResponseEntity<List<Employee>> getEmployeeByNameAndBeginContactNumber(@PathVariable final String name, @MatrixVariable final String beginContactNumber) {
|
||||
final List<Employee> employeesList = new ArrayList<Employee>();
|
||||
for (final Map.Entry<Long, Employee> employeeEntry : employeeMap.entrySet()) {
|
||||
final Employee employee = employeeEntry.getValue();
|
||||
if (employee.getName().equalsIgnoreCase(name) && employee.getContactNumber().startsWith(beginContactNumber)) {
|
||||
employeesList.add(employee);
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(employeesList, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/employeesContacts/{contactNumber}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public ResponseEntity<List<Employee>> getEmployeeBycontactNumber(@MatrixVariable(required = true) final String contactNumber) {
|
||||
final List<Employee> employeesList = new ArrayList<Employee>();
|
||||
for (final Map.Entry<Long, Employee> employeeEntry : employeeMap.entrySet()) {
|
||||
final Employee employee = employeeEntry.getValue();
|
||||
if (employee.getContactNumber().equalsIgnoreCase(contactNumber)) {
|
||||
employeesList.add(employee);
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(employeesList, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "employeeData/{employee}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, String>> getEmployeeData(@MatrixVariable final Map<String, String> matrixVars) {
|
||||
return new ResponseEntity<>(matrixVars, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "employeeArea/{workingArea}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public ResponseEntity<List<Employee>> getEmployeeByWorkingArea(@MatrixVariable final Map<String, LinkedList<String>> matrixVars) {
|
||||
final List<Employee> employeesList = new ArrayList<Employee>();
|
||||
final LinkedList<String> workingArea = matrixVars.get("workingArea");
|
||||
for (final Map.Entry<Long, Employee> employeeEntry : employeeMap.entrySet()) {
|
||||
final Employee employee = employeeEntry.getValue();
|
||||
for (final String area : workingArea) {
|
||||
if (employee.getWorkingArea().equalsIgnoreCase(area)) {
|
||||
employeesList.add(employee);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(employeesList, HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
<%@ 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 a Company</title>
|
||||
</head>
|
||||
<body>
|
||||
<h3>Welcome, Enter The Company Details</h3>
|
||||
|
||||
<form:form method="POST" action="/spring-mvc-java/addCompany"
|
||||
modelAttribute="company">
|
||||
<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><input type="submit" value="Submit"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form:form>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
|
||||
<html>
|
||||
<head>
|
||||
<title>Spring MVC Form Handling</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h2>Submitted Company Information</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Name :</td>
|
||||
<td>${name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ID :</td>
|
||||
<td>${id}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
|
@ -22,6 +22,10 @@
|
|||
<td><form:label path="contactNumber">Contact Number</form:label></td>
|
||||
<td><form:input path="contactNumber" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><form:label path="workingArea">Working Area</form:label></td>
|
||||
<td><form:input path="workingArea" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="submit" value="Submit" /></td>
|
||||
</tr>
|
||||
|
|
|
@ -20,6 +20,10 @@
|
|||
<td>Contact Number :</td>
|
||||
<td>${contactNumber}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Working Area :</td>
|
||||
<td>${workingArea}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue