Spring Bootプロジェクトでパラメータチェックはどうやって使いますか?


ウェブプロジェクトを開発する時、私達はcontrol層から送られてきたパラメータに対して基本的なチェックを行います。例えば、空ではない、nullではない、整数値の範囲、文字列の個数、日付、メールボックスなどです。最も一般的なのはコードチェックを直接書くことです。これからは煩雑で融通が利かないです。
Bean Validation 1.0(JSR-303)は、スプリングブックプロジェクトではヒベルナvalidator 5(http://hibernate.org/validator/)を持参していますので、この特性を使いやすいです。
コアのpom依存性:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>5.3.1.Final</version>
</dependency>
まず、Beanを宣言して、Spring Bootまで注入する必要があります。

@Configuration
@EnableAutoConfiguration
public class FactoryConfig {
  
  final static Logger logger= LoggerFactory.getLogger(FactoryConfig.class);
 
  @Bean
  public MethodValidationPostProcessor methodValidationPostProcessor(){
   return new MethodValidationPostProcessor();
  }
  
  }
よく使われている注釈を確認します。

@AssertFalse   false
@AssertTrue   true
@DecimalMax(value=,inclusive=)     value,
inclusive=true,     
@DecimalMin(value=,inclusive=)     
@Max(value=)     value
@Min(value=)     value
@NotNull   Null
@Past     
@Pattern(regex=,flag=)   
@Size(min=, max=)    ,  ,map    
@Valid  po       
使用例を見ます。

package hello;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class PersonForm {

  //      ,       2 30  
  @NotNull(message = "      ")
  @Size(min=2, max=30, message = "       2 30  ")
  private String name;
  
  //      ,        18 
  @NotNull
  @Min(18)
  private Integer age;

  public String getName() {
    return this.name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Integer getAge() {
    return age;
  }

  public void setAge(Integer age) {
    this.age = age;
  }

  public String toString() {
    return "Person(Name: " + this.name + ", Age: " + this.age + ")";
  }
}

次にどうやってController層で使うかを見てください。

//              
 @GetMapping("/check")
@ResponseBody
public String check(@Min(0,message = "kpId      0") @RequestParam int kpId,@RequestParam int level) {
    return "ok";
}
  //         @Valid
  @PostMapping("/")
  public String checkPersonInfo(@Valid PersonForm personForm, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
      return "form";
    }
    return "redirect:/results";
  }
上のSpringで提供したBindingResultはエラー結果のパッケージです。ウェブページでこのオブジェクトを通じて詳細なエラー情報を入手できます。

<td th:if="${#fields.hasErrors('age')}" th:errors="*{age}">Age Error</td>
まとめ:
注釈を使うことによって、入ってきたwebパラメータを迅速に検査します。ここでは一部の検査の知識を列挙しました。皆さんの勉強に役に立つように願っています。どうぞよろしくお願いします。