Spring 4 에서 vaidation 데이터 검증 이 잘못 되 었 습 니 다(maven)의 해결

SpringMVC 4 는 데이터 검증 을 사용 할 때 hibenate-vaidator 가방 을 사용 해 야 합 니 다.
첫 번 째 의존 추가

    <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>
두 번 째 단계 검사 주 해 를 추가 합 니 다.

package com.demo.model;
/*
* spring4  hibernate  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 = "       ")
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    @Size(min = 6,max = 20,message = "   6-20 ")
    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 = "        ")
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}
세 번 째 단 계 는 컨트롤 러 에서 지정 한 매개 변 수 를 검사 하고 설명 합 니 다.
 주:Binding Result 는@Validate 에 바짝 붙 어야 합 니 다.

    //@Validated       BindingResult  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";
    }
주:이 설정 은 검사 가 유효 하 는 지 여부 에 도 영향 을 줍 니 다.

<mvc:annotation-driven/>
SpringBoot---데이터 검증 vaidation(실전 중,추천 하지 않 음)
1.오류 정보 정의
resources/아래 에 ValidationMessages.properties 라 는 이름 을 만 듭 니 다.

member.mid.notnull.error=        
member.mid.email.error=               
member.mid.length.error=        
2.보 류 에 주석 추가

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.제어 추가 검증

@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  】"+result.hasErrors());
  
  if(result.hasErrors()){
   List<ObjectError> list = result.getAllErrors();
   list.forEach(oe -> {
    
   });
   return result.getAllErrors();
  }
  return vo; 
 }
}
4.방문 결과
[{"codes":["Email.member.mid","Email.mid","Email.java.lang.String","Email"],"arguments":[{"codes":["member.mid","mid"],"arguments":null,"defaultMessage":"mid","code":"mid"},[],{"defaultMessage":".*","arguments":null,"codes":[".*"]}],"defaultMessage":"ç¨æ・åç注åå¿é¡»è¾å¥æ­£ç¡®çé®ç®±","objectName":"member","field":"mid","rejectedValue":"xx","bindingFailure":false,"code":"Email"}]
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기