SPRING MVC - Validation(2)


なぜValidationが必要なのか誰が知りたいですか?こちら

Bean Validation


検証を作成するためにコードを作成するたびに、メッセージコードの作成が面倒になります.
考えてみれば,検証処理を行う場合,ほとんどの論理は最小値がいくらであるべきか,最大値がいくらであるべきか,NULLや空ではない.
したがって,Ben Validationは汎用化され標準化されており,検証がより簡単になる.
Ben Validatonは
  • Spring MVCで
  • spring-boot-start-validationライブラリ.(自動グローバル登録Validator)
  • @NotBlank、@Range、@NotNull、@NotEmptyなど、複数のAnnot記号を提供します.
  • Annotationに基づいて、MessageCodesResolverによって複数のメッセージコードを生成することができる.
  • 優先度
  • Annotation.object name.field
  • Annotation.field
  • Annotation.type(field)
  • Anntotation
    この順序でメッセージを検索して出力します!
    エラーメッセージをより詳細に表示できます.
  • Code


    会員入金状況仮定
    SignupForm
    @Data
    public class SignupForm {
    
        @NotEmpty(message="이름은 필수 입니다!")
        private String name;
    
        @NotEmpty(message = "비밀번호는 필수 입니다!")
        private String password;
    
        @NotNull(message="나이는 필수 입니다!")
        private Integer age;
    }
    Controller
    @Controller
    public class SignupController {
        
        
        @GetMapping("/signup")
        public String signupForm(Model model){
            model.addAttribute("signupForm",new SignupForm());
    
            return "signup";
        }
    
        @PostMapping("/signup")
        public String signup(@Validated @ModelAttribute SignupForm form, BindingResult bindingResult){
            if(bindingResult.hasErrors()){
                return "signup";
            }
    
            return "redirect:/";
        }
    }
    signup.html
    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="utf-8">
        <style>
            .field-error{
                border-color:red;
                color:red;
            }
        </style>
    </head>
    <body>
    
    <div >
        <div >
            <h2 >회원 가입</h2>
        </div>
    
        <form  th:action th:object="${signupForm}" method="post">
            <div>
                <label for="name" >이름</label>
                <input type="text" id="name" th:field="*{name}"  placeholder="이름을 입력하세요"
                       th:errorclass="field-error">
                <div class="field-error" th:errors="*{name}">
                    이름 오류
                </div>
            </div>
            <div>
                <label for="password" >비밀번호</label>
                <input type="text" id="password" th:field="*{password}"
                       placeholder="가격을 입력하세요" th:errorclass="field-error">
                <div class="field-error" th:errors="*{password}">
                    가격 오류
                </div>
            </div>
            <div>
                <label for="age" >나이</label>
                <input type="text" id="age" th:field="*{age}"
                       placeholder="가격을 입력하세요" th:errorclass="field-error">
                <div class="field-error" th:errors="*{age}">
                    가격 오류
                </div>
            </div>
    
            <div >
                <input type="submit">
            </div>
        </form>
    </div>
    </body>
    </html>
    実行結果


    以上が私たちのヒントですありがとうございます


    この記事では、インフラストラクチャの金ヨンハン氏の「Spring MVC 2編−バックエンドWeb開発のキーテクノロジー」を学び、執筆する.
    ソース:https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard