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"}]