Forms Spring3MVC表单未在数据库中保存数据
我试图运行一个简单的Spring3MVC项目来保存表单数据,但是当我提交数据时,页面会转到add.html,其中包含空表单,并且没有数据保存在Mysql中,也没有数据显示在页面上 控制器Forms Spring3MVC表单未在数据库中保存数据,forms,spring,model-view-controller,Forms,Spring,Model View Controller,我试图运行一个简单的Spring3MVC项目来保存表单数据,但是当我提交数据时,页面会转到add.html,其中包含空表单,并且没有数据保存在Mysql中,也没有数据显示在页面上 控制器 package com.app.a; /** * Handles requests for the application home page. */ @Controller @RequestMapping(value="/") public class HomeController { @Au
package com.app.a;
/**
* Handles requests for the application home page.
*/
@Controller
@RequestMapping(value="/")
public class HomeController {
@Autowired
private Personrepo personRepo;
@RequestMapping(method=RequestMethod.GET)
public String showForm(ModelMap model){
List<Person> persons = personRepo.getAll();
model.addAttribute("persons", persons);
Person person = new Person();
person.setId(UUID.randomUUID().toString());
model.addAttribute("person", person);
return "home";
}
@RequestMapping(value="/add", method=RequestMethod.POST)
public ModelAndView add(@ModelAttribute(value="person") Person person,BindingResult result){
ModelAndView mv = new ModelAndView("home");
if(!result.hasErrors()) {
personRepo.add(person);
person = new Person();
person.setId(UUID.randomUUID().toString());
mv.addObject("person", person);
}
mv.addObject("persons", personRepo.getAll());
return mv;
}
@RequestMapping(value="/edit", method=RequestMethod.POST)
public ModelAndView edit(@ModelAttribute(value="person") Person person,BindingResult result) {
ModelAndView mv = new ModelAndView("home");
if(!result.hasErrors()) {
personRepo.edit(person);
person = new Person();
mv.addObject("person", person);
}
mv.addObject("persons", personRepo.getAll());
return mv;
}
@RequestMapping(value="/delete", method=RequestMethod.POST)
public ModelAndView update(@ModelAttribute(value="person") Person person,BindingResult result){
ModelAndView mv = new ModelAndView("home");
if(!result.hasErrors()) {
personRepo.delete(person.getId());
//personRepo.delete(person);
person = new Person();
mv.addObject("person", person);
}
mv.addObject("persons", personRepo.getAll());
return mv;
}
}
package com.app.a;
/**
*处理应用程序主页的请求。
*/
@控制器
@请求映射(value=“/”)
公共类家庭控制器{
@自动连线
私人Personrepo Personrepo;
@RequestMapping(method=RequestMethod.GET)
公共字符串showForm(ModelMap模型){
List persons=personRepo.getAll();
模型。添加属性(“人员”,人员);
Person=新人();
person.setId(UUID.randomuid().toString());
model.addAttribute(“person”,person);
返回“家”;
}
@RequestMapping(value=“/add”,method=RequestMethod.POST)
公共模型和视图添加(@modeldattribute(value=“person”)person,BindingResult){
ModelAndView mv=新的ModelAndView(“主页”);
如果(!result.hasErrors()){
人事报告新增(人);
person=新的person();
person.setId(UUID.randomuid().toString());
mv.添加对象(“人”,人);
}
mv.addObject(“persons”,personRepo.getAll());
返回mv;
}
@RequestMapping(value=“/edit”,method=RequestMethod.POST)
公共模型和视图编辑(@modeldattribute(value=“person”)person,BindingResult){
ModelAndView mv=新的ModelAndView(“主页”);
如果(!result.hasErrors()){
个人报告编辑(个人);
person=新的person();
mv.添加对象(“人”,人);
}
mv.addObject(“persons”,personRepo.getAll());
返回mv;
}
@RequestMapping(value=“/delete”,method=RequestMethod.POST)
公共模型和视图更新(@modeldattribute(value=“person”)person,BindingResult){
ModelAndView mv=新的ModelAndView(“主页”);
如果(!result.hasErrors()){
personRepo.delete(person.getId());
//删除(人);
person=新的person();
mv.添加对象(“人”,人);
}
mv.addObject(“persons”,personRepo.getAll());
返回mv;
}
}
Home.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!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">
</head>
<body>
<table align="center">
<c:forEach items="${persons}" var="person">
<tr>
<td>Welcome:</td>
<td><c:out value="${person.firstName}" /></td>
</tr>
<tr>
<td>Your lastname:</td>
<td><c:out value="${person.lastName}" /></td>
</tr>
</c:forEach>
</table>
<form:form modelAttribute="person" method="post" action="add.html">
<form:hidden path="id" />
<table>
<tr>
<td><form:label path="firstName">First Name:</form:label></td>
<td><form:input path="firstName" /></td>
</tr>
<tr>
<td><form:label path="lastName">Last Name</form:label></td>
<td><form:input path="lastName" /></td>
</tr>
<tr>
<td><form:label path="money">Money</form:label></td>
<td><form:input path="money" /></td>
</tr>
</table>
<input type="submit" value="Save" />
</form:form>
</body>
</html>
欢迎:
您的姓氏:
名字:
姓
钱
从外观上看,除非您正在进行内容协商,否则您没有映射到URL的控制器方法add.html
比较:
<form:form modelAttribute="person" method="post" action="add.html">
成功
<form:form modelAttribute="person" method="post" action="add">
你应该很好。谢谢Juliano格式化我的帖子。你能告诉我你是如何格式化这段代码的吗?我尝试了Ctrl+K。选择一组行进行格式化,然后单击工具栏上的{}选项。post
Personrepo
。你使用ORM/JPA吗?这是如何配置的?您在哪里打开会话?我在服务类中使用SpringJDBC模板取决于servlet映射。如果servlet映射被定义为*.html
,那么它应该按原样工作。
<form:form modelAttribute="person" method="post" action="add">