Solution of invalid validation data verification under Spring4 of maven

  • 2021-09-11 20:30:59
  • OfStack

hibernate-validator packets are required when SpringMVC4 uses data validation

Step 1 Add dependencies


    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>2.0.0.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.4.1.Final</version>
    </dependency>

Step 2 Add validation comments


package com.demo.model;
/*
* spring4  Use hibernate In validation
* 
* */
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.Size;
public class User {
    private String username;
    private String password;
    private String nickname;
    private String email;
    public User(){
    }
    public User(String username, String password, String nickname, String email) {
        this.username = username;
        this.password = password;
        this.nickname = nickname;
        this.email = email;
    }
    @NotBlank(message = " User name cannot be empty ")
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    @Size(min = 6,max = 20,message = " Password is 6-20 Bit ")
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
    @Email(message = " Please enter a valid email address ")
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

Step 3 Check and annotate the specified parameters in the controller

Note: BindingResult must follow @ Validate


    //@Validated Specify the validation object  BindingResult Follow closely Validated
    @RequestMapping(value="/add",method = RequestMethod.POST)
    public String add(@Validated User user, BindingResult br){
        System.out.println(br);
        System.out.println(br.getErrorCount());
        if(br.hasErrors())
            return "user/add";
        users.put(user.getUsername(),user);
        return "redirect:/user/users";
    }

Note: This configuration will also affect whether the verification takes effect


<mvc:annotation-driven/>

SpringBoot--Data validation validation (not recommended in actual combat)

1. Define error messages

Create the name ValidationMessages. properties under resources/


member.mid.notnull.error= User name is not allowed to be empty 
member.mid.email.error= You must enter the correct mailbox for user name registration 
member.mid.length.error= The user name is in the wrong format 

2. Add annotations to the Vo class


package com.zemel.micorboot.vo;
import java.io.Serializable;
import java.util.Date;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
public class Member implements Serializable{
 
 /**
  * 
  */
 private static final long serialVersionUID = 1L;
 @NotNull(message="{member.mid.notnull.error}")
 @Email(message="{member.mid.email.error}")
 @Length(min=6,message="{member.mid.length.error}")
 private String mid;
 private Integer age;
 private Double salary;
 private Date birthday;
 public String getMid() {
  return mid;
 }
 public void setMid(String mid) {
  this.mid = mid;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public Double getSalary() {
  return salary;
 }
 public void setSalary(Double salary) {
  this.salary = salary;
 }
 public Date getBirthday() {
  return birthday;
 }
 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }
}

3. Control add validation


@Valid Member vo, BindingResult result
package com.zemel.micorboot.controller;
import java.util.List;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zemel.micorboot.base.AbstractBaseController;
import com.zemel.micorboot.vo.Member;
 
@Controller
public class MemberController extends AbstractBaseController {
 @GetMapping("/addPre")
 public String addPre(){
  return "message/member_add";
 }
 
 @GetMapping("/add")
 @ResponseBody
 public Object add(@Valid Member vo, BindingResult result){
  System.out.println(" " ADD Method " "+result.hasErrors());
  
  if(result.hasErrors()){
   List<ObjectError> list = result.getAllErrors();
   list.forEach(oe -> {
    
   });
   return result.getAllErrors();
  }
  return vo; 
 }
}

4. Access results

[{"codes": ["Email. member. mid", "Email. mid", "ES50java. lang. String", "Email"], "arguments": [{"codes": ["member. mid", "mid"], "arguments": null, "code": ". *", "arguments": null, "codes": [". *"]}], "defaultMessage": "& ccedil; & aelig; & aring; & ccedil; & aelig; & sup3; & aring; & aring; & frac34; & aring; & ccedil; & ccedil; & ccedil; & reg; & ccedil; é & reg; & ccedil; & reg; ±", "objectName": "member", "field": "mid", "rejectedValue": "xx", "bindingFailure": false, "code": "Email"}]


Related articles: