这一讲介绍更新操作的实现,更新操作在controller类中首先需要在前台通过某一字段获取对象之后,将对象放在controller类中的Model对象中,用于在update.jsp前台页面进行编辑操作,接着在update.jsp页面修改完成之后,需要将前台的user对象在controller类中进行put操作,之后跳转到list.jsp显示页面。对应更新操作在controller类中的代码实现如下所示:
@RequestMapping(value="/{username}/update",method=RequestMethod.GET) public String update(@PathVariable String username,Model model) { model.addAttribute(users.get(username)); return "user/update"; } @RequestMapping(value="/{username}/update",method=RequestMethod.POST) public String update(@PathVariable String username,@Validated Users user,BindingResult br) { if(br.hasErrors()) { //如果有错误直接跳转到add视图 return "user/update"; } users.put(username, user); return "redirect:/user/users"; }
对应在update.jsp页面与添加操作add.jsp页面代码一致,进行编辑操作的代码如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="sf" uri="http://www.springframework.org/tags/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>Insert title here</title> </head> <body> <!-- 此时没有写action,直接提交会提交给/add --> <sf:form method="post" modelAttribute="user"> Username:<sf:input path="username"/><sf:errors path="username"/><br/> Password:<sf:password path="password"/><sf:errors path="password"/><br/> Nickname:<sf:input path="nickname"/><br/> Email:<sf:input path="email"/><sf:errors path="email"/><br/> <input type="submit" value="修改用户"/> </sf:form> </body> </html>
在编辑页面之前需要添加一个跳转到update.jsp页面的链接,对应在list.jsp页面添加到update操作的链接,对应代码如下所示:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>用户列表</title> </head> <body> <a href="add">添加</a> <c:forEach items="${users}" var="um" > <a href="${um.value.username}">${um.value.username }</a> ----${um.value.nickname } ----${um.value.password }--<a href="${um.value.username }/update">修改</a> ----${um.value.email }<br/> </c:forEach> </body> </html>
最终在编辑完成之后跳转到列表页面。
时间: 2024-10-16 19:59:40