La unión de la comprobación de los datos 08

datos erróneos en el sistema va a ser restringida, por ejemplo, podría haber sido salarios, pero entrar en el "abc", originalmente edad de la persona, pero entró en 12.000. Todos estos reducirán la estabilidad del sistema. En esta sección se describe el SpringMVC verificación de datos.

1, las limitaciones ambientales

  • sistema operativo win10 64 bits
  • idea2018.1.5
  • JDK-8u162-ventanas-x64
  • spring4.2.4

2, la premisa de la restricción

3, pasos

  • Añadir la dependencia en pom.xml
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.4.1.Final</version>
        </dependency>
  • Agregue la siguiente en primavera-mvc.xml:
    <mvc:annotation-driven validator="validator" ></mvc:annotation-driven>

    <bean id="validator"
          class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
        <!--不设置则默认为classpath下的 ValidationMessages.properties -->
        <property name="validationMessageSource" ref="validatemessageSource"/>
    </bean>
    <bean id="validatemessageSource"
          class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:validatemessages"/>
        <property name="fileEncodings" value="utf-8"/>
        <property name="cacheSeconds" value="120"/>
    </bean>
  • Creado en los validatemessages.properties carpeta src [error en la información del archivo, y desacoplado del código], que dice lo siguiente:
account.length.notsuit=the lenght of account is not required!!
  • Net.wanho.entity.User.java crea en el archivo src

import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
    private int id;
    @Length(min=4,max = 10,message = "{account.length.notsuit}")
    private String name;
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date date;
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }
    public User() {
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
    public void setName(String name) {
        this.name = name;
    }
}
  • Net.wanho.controller.ValidateController.java crea en la carpeta src, de la siguiente manera:
import com.alibaba.fastjson.JSONObject;
import net.wanho.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;

@Controller
public class ValidateController {

    @RequestMapping("/validate/test1")
    public ModelAndView test1(@Valid User user, BindingResult bindingResult) {
        List<String> errorList = new ArrayList<>();
        ModelAndView modelAndView = new ModelAndView();
        if (bindingResult.hasErrors()) {//有问题
            for (FieldError fieldError : bindingResult.getFieldErrors()) {
                errorList.add(fieldError.getDefaultMessage());
            }
            modelAndView.setViewName("error");
            modelAndView.addObject("error", errorList);
            return modelAndView;
        } else {
            //正确逻辑往下走
            modelAndView.setViewName("success");
        }
        return modelAndView;
    }

    @RequestMapping("/validate/test2")
    @ResponseBody
    public JSONObject foo1(@Valid User user , BindingResult bindingResult) {


        JSONObject jsonObject = new JSONObject();
        List<String> errorList = new ArrayList<>();
        if(bindingResult.hasErrors()){
            for (FieldError fieldError : bindingResult.getFieldErrors()) {
                errorList.add(fieldError.getDefaultMessage());
            }
            jsonObject.put("status",400);
            jsonObject.put("errors",errorList);
            return jsonObject;
        }
        jsonObject.put("status",200);
        return jsonObject;
    }
}
  • La creación de testvalidate.jsp en la carpeta web [un mensaje de error se muestra a la nueva página], que dice lo siguiente:
<%--
  Created by IntelliJ IDEA.
  User: zhangli
  Date: 2019/11/13
  Time: 11:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>

</head>
<body>
    <form action="/validate/test1" method="get" id="myform">
        <input type="text" value="ali" name="name" />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

  • Crear una carpeta en un testvalidate.html web [un mensaje de error está representada por el Ajax de devolución de llamada a esta página], que dice lo siguiente:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="jquery-1.10.2.js"></script>
    <script type="text/javascript" >
        function validate(){
            $.ajax({
                data:{name:$("#name").val()},
                dataType:"json",
                type:"get",
                url:"/validate/test2",
                success:function (data) {
                    if(data.status=='400')
                    {
                        $("#errormsg").html(data.errors)
                    }
                }
            })
        }

    </script>
</head>
<body>
    <input type="text" value="ali" name="name" id="name" />
    <div id="errormsg" style="color: red"></div>
    <input type="button" onclick="validate()" value="提交" />
</body>
</html>
  • Error.jsp creado en WEB-INF / página / carpeta, de la siguiente manera:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${error}
</body>
</html>

Supongo que te gusta

Origin www.cnblogs.com/alichengxuyuan/p/12554619.html
Recomendado
Clasificación