9. 数据回显
9.1. Form表单(Jsp页面)
html
<%--
Created by IntelliJ IDEA.
User: root
Date: 2020/3/30
Time: 14:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户的添加</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/validator3">
${err}
<!--模拟都是 30-字段 -->
<table>
<tr>
<td>用户名字</td>
<td><input type="text" name="username" value="${user.username}"></td>
</tr>
<tr>
<td>常用地址</td>
<td><input type="text" name="password" value="${user.password}"></td>
</tr>
<tr>
<td>账户余额</td>
<td><input type="text" name="amount" value="${user.amount}"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="用户注册" onclick="func()"></td>
</tr>
</table>
</form>
</body>
</html>
9.2. 自定义代码通过request将模型设置为属性
java
* 1 写完Controller 方法测试,路径: http://127.0.0.1:8080/springmvc/validator1?username=abc&password=123456&amount=99
* 2 在需要校验单 参数上添加@Validated注解 ,并且在此参数后面(紧挨着校验的参数)添加BindingReuslt 参数用于接收异常消息
*
* 需要校验 用户名
*
* 返回void没有经过视图解析器
*
* @param user
* @param response
* @throws IOException
*/
@RequestMapping("/validator3")
public void saveUser(
@Validated(value = ValidateGroupLogin.class )
User user ,
BindingResult bindingResult , HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
//当产生异常
if(bindingResult.getErrorCount()>0){
//获取所有异常对象
List<ObjectError> errs = bindingResult.getAllErrors();
String errStr = "";
for (ObjectError err : errs) {
errStr += err.getDefaultMessage()+",";
}
request.setAttribute("err",errStr);
request.setAttribute("user",user);
//回到添加页面 ,将异常消息返回到添加页面,让用户重新修改
request.getRequestDispatcher("/review/user_add.jsp").forward(request,response);
}else{
//保存到数据库
response.setContentType("text/html;charset=utf-8");
//跳转到一个成功页面
PrintWriter out = response.getWriter();
out.println("<div style='border:1px solid blue'>通过校验的用户参数:"+
user
+"</div>");
out.flush();
out.close();
}
}
9.3. 使用@ModelAttribute注解,将参数设置为属性
属性的可以为参数类名的首字母变小写如参数(User user)key 为“user” ,(User peron)还是“user”作为key
java
/**
* 1 写完Controller 方法测试,路径: http://127.0.0.1:8080/springmvc/validator1?username=abc&password=123456&amount=99
* 2 在需要校验单 参数上添加@Validated注解 ,并且在此参数后面(紧挨着校验的参数)添加BindingReuslt 参数用于接收异常消息
*
* 需要校验 用户名
*
* 返回void没有经过视图解析器
* @ModelAttribute("mysuer") === model.addAttribute("mysuer",user);
* @ModelAttribute User user == model.addAttribute("user",user);
* @param user
* @param response
* @throws IOException
*/
@RequestMapping("/validator3")
public String saveUser(
@ModelAttribute("mysuer")
@Validated(value = ValidateGroupLogin.class )
User user ,
BindingResult bindingResult , HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
//当产生异常
if(bindingResult.getErrorCount()>0){
//获取所有异常对象
List<ObjectError> errs = bindingResult.getAllErrors();
String errStr = "";
for (ObjectError err : errs) {
errStr += err.getDefaultMessage()+",";
}
request.setAttribute("err",errStr);
return "foward:/review/user_add.jsp";
}else{
//保存到数据库
response.setContentType("text/html;charset=utf-8");
//跳转到一个成功页面
PrintWriter out = response.getWriter();
out.println("<div style='border:1px solid blue'>通过校验的用户参数:"+
user
+"</div>");
out.flush();
out.close();
}
return null;
}
