GetMapping et PostMapping annotations
J'ai un doubr sur cette opération. La création de cette classe de contrôleur de travaux:
@Controller
public class StudentController {
@RequestMapping(value = "/student", method = RequestMethod.GET)
public ModelAndView student() {
return new ModelAndView("student", "command", new Student());
}
@RequestMapping(value = "/addStudent", method = RequestMethod.POST)
public String addStudent(@ModelAttribute("SpringWeb")Student student,
ModelMap model) {
model.addAttribute("name", student.getName());
model.addAttribute("age", student.getAge());
model.addAttribute("id", student.getId());
return "result";
}
Mais en utilisant GetMapping et PostMapping ne fonctionne pas, le projet s'exécute normalement, mais n'affiche pas la page d'appel. C'est à dire. :
@Controller
public class StudentController {
@GetMapping("/student")
public ModelAndView student() {
return new ModelAndView("student", "command", new Student());
}
@PostMapping("/addStudent")
public String addStudent(@ModelAttribute("SpringWeb")Student student,
ModelMap model) {
model.addAttribute("name", student.getName());
model.addAttribute("age", student.getAge());
model.addAttribute("id", student.getId());
return "result";
}
}
Code complet, de la manière ci-dessous fonctionne correctement :
Student.java
public class Student {
private Integer age;
private String name;
private Integer id;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
StudentController
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
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;
@Controller
public class StudentController {
@RequestMapping(value = "/student", method = RequestMethod.GET)
public ModelAndView student() {
return new ModelAndView("student", "command", new Student());
}
@RequestMapping(value = "/addStudent", method = RequestMethod.POST)
public String addStudent(@ModelAttribute("SpringWeb") Student student, ModelMap model) {
model.addAttribute("name", student.getName());
model.addAttribute("age", student.getAge());
model.addAttribute("id", student.getId());
return "result";
}
}
résultat.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!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=UTF-8">
<title>Spring MVC Form Handling</title>
</head>
<body>
<h2>Submitted Student Information</h2>
<table>
<tr>
<td>Name</td>
<td>${name}</td>
</tr>
<tr>
<td>Age</td>
<td>${age}</td>
</tr>
<tr>
<td>ID</td>
<td>${id}</td>
</tr>
</table>
</body>
</html>
étudiant.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<!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=UTF-8">
<title>Spring MVC Form Handling</title>
</head>
<body>
<h2>Student Information</h2>
<form:form method="POST" action="/HelloForm/addStudent">
<table>
<tr>
<td><form:label path="name">Name</form:label></td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td><form:label path="age">Age</form:label></td>
<td><form:input path="age"/></td>
</tr>
<tr>
<td><form:label path="id">ID</form:label></td>
<td><form:input path="id"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Submit" />
</td>
</tr>
</table>
</form:form>
</body>
</html>
SpringContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp"/>
</bean>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>HelloForm</display-name>
<servlet>
<servlet-name>HelloForm</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloForm</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Printemps version utilisez-vous?!
Je l'aide de Printemps 4.3.4.
Je l'aide de Printemps 4.3.4.
OriginalL'auteur Daniel Dias | 2016-11-18
Vous devez vous connecter pour publier un commentaire.
Dans votre SpringContext.xml fichier, vous utilisez DefaultAnnotationHandlerMapping classe (qui est obsolète depuis le Printemps 3.2) pour gérer @RequestMapping annotation implicitement, ce qui ne veut pas comprendre la nouvelle annotation comme @GetMapping, @PostMapping...(qui a été introduit dans le Printemps depuis la version 4.3), de sorte qu'il ignore les nouvelles annotations. Afin d'utiliser la nouvelle annotation, vous devez utiliser RequestMappingHandlerMapping classe. Vous pouvez simplement définir ce bean dans votre SpringContext.xml comme ceci:
Mais la méthode recommandée consiste à utiliser le "MVC espace de Noms XML", il va faire le travail ci-dessus pour vous. Ajoutez le code suivant dans votre SpringContext.xml (vous devez définir le mvc de l'espace de noms de la première):
Veuillez voir ici pour plus de détails à ce sujet.
OriginalL'auteur Lawrence
Vous pouvez modifier l' @Contrôleur @RestController puis de les utiliser de @GetMapping et @PostMapping et exécuter le code. Cela devrait fonctionner.
OriginalL'auteur Anonymous
Anonyme ci-dessus triste de rectification, de modification @Contrôleur @RestController. C'est la première décision, d'une autre façon en ajoutant @ResponseBody après @GetMapping ou @PostMapping.
OriginalL'auteur user11312189