下面是关于“详解SpringMVC如何进行数据回显”的完整攻略。
一、什么是数据回显
在Web开发中,数据回显是指当出现表单提交后,由于某些原因(如数据验证未通过,数据存储出错等)导致当前页面跳转到另一个页面后,原本用户已经填写的数据丢失,需要重新填写。为了减少用户的操作负担,需要将用户已经填写的数据重新显示回表单中,这就是数据回显。
二、SpringMVC如何进行数据回显
SpringMVC提供了以下两种方式实现数据回显:
- 使用ModelAndView
在Controller中将需要回显的数据添加到ModelAndView中,然后在视图层(JSP或HTML)中使用EL表达式获取对应的数据并在表单表现出来。以下是一个简单的示例代码:
@RequestMapping("/userEdit")
public ModelAndView userEdit(int userId) {
User user = userService.getUserById(userId);
ModelAndView mav = new ModelAndView("user_edit"); // 视图名称
mav.addObject("user", user); // 添加需要回显的数据
return mav;
}
<!-- JSP视图代码 -->
<form action="/userSave" method="post">
<div>
<label>用户名:</label>
<input type="text" name="name" value="${user.name}" />
</div>
<div>
<label>年龄:</label>
<input type="text" name="age" value="${user.age}" />
</div>
<div>
<button type="submit">保存</button>
</div>
</form>
- 使用@ModelAttribute注解
在Controller的处理请求的方法上使用@ModelAttribute注解,将需要回显的数据模型传递给它,然后在视图层中使用EL表达式获取对应的数据并在表单表现出来。以下是一个示例代码:
@RequestMapping("/userEdit")
public String userEdit(int userId, @ModelAttribute("user") User user) {
user = userService.getUserById(userId);
return "user_edit"; // 视图名称
}
<!-- JSP视图代码 -->
<form action="/userSave" method="post">
<div>
<label>用户名:</label>
<input type="text" name="name" value="${user.name}" />
</div>
<div>
<label>年龄:</label>
<input type="text" name="age" value="${user.age}" />
</div>
<div>
<button type="submit">保存</button>
</div>
</form>
三、示例说明
在实际开发中,我们可能需要针对不同的情况进行数据回显,下面给出两个常见的示例说明。
- 数据验证失败
假设我们需要对用户输入的数据进行验证,当其中某个字段不符合验证规则时,需要将原本用户已经填写的数据显示回表单,请求地址为/userSave,在这个请求处理方法中进行数据验证和回显。
@RequestMapping(value = "/userSave", method = RequestMethod.POST)
public ModelAndView userSave(@Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) { // 验证失败
ModelAndView mav = new ModelAndView("user_edit"); // 视图名称
mav.addObject("user", user); // 将需要回显的数据添加到视图中
mav.addObject("errors", bindingResult.getAllErrors()); // 将错误信息添加到视图中
return mav;
} else {
userService.saveUser(user); // 验证通过,保存数据
return new ModelAndView("redirect:/userList");
}
}
<!-- JSP视图代码 -->
<form action="/userSave" method="post">
<div>
<label>用户名:</label>
<input type="text" name="name" value="${user.name}" />
<span class="error">${errors.getFieldError("name").defaultMessage}</span>
</div>
<div>
<label>年龄:</label>
<input type="text" name="age" value="${user.age}" />
<span class="error">${errors.getFieldError("age").defaultMessage}</span>
</div>
<div>
<button type="submit">保存</button>
</div>
</form>
- 数据存储出错
假设我们需要将用户输入的数据存储到数据库中,在执行数据库操作时,可能会出现异常,如果出现异常需要将原本用户已经填写的数据显示回表单,这里假设我们在数据库保存过程中抛出了一个异常。
@RequestMapping(value = "/userSave", method = RequestMethod.POST)
public ModelAndView userSave(User user) {
try {
userService.saveUser(user); // 执行操作
return new ModelAndView("redirect:/userList");
} catch (Exception e) { // 出现异常
ModelAndView mav = new ModelAndView("user_edit"); // 视图名称
mav.addObject("user", user); // 将需要回显的数据添加到视图中
mav.addObject("error", e.getMessage()); // 将异常信息添加到视图中
return mav;
}
}
<!-- JSP视图代码 -->
<form action="/userSave" method="post">
<div>
<label>用户名:</label>
<input type="text" name="name" value="${user.name}" />
</div>
<div>
<label>年龄:</label>
<input type="text" name="age" value="${user.age}" />
</div>
<div class="error">${error}</div>
<div>
<button type="submit">保存</button>
</div>
</form>
通过这两个示例,我们可以看到数据回显的实现方式及其具体应用场景。在实际开发中,我们需要根据具体情况选择合适的回显方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解SpringMVC如何进行数据回显 - Python技术站