Skip to content

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;

}

Released under the MIT License.