Spring Bootプロジェクトでパラメータチェックはどうやって使いますか?
ウェブプロジェクトを開発する時、私達はcontrol層から送られてきたパラメータに対して基本的なチェックを行います。例えば、空ではない、nullではない、整数値の範囲、文字列の個数、日付、メールボックスなどです。最も一般的なのはコードチェックを直接書くことです。これからは煩雑で融通が利かないです。
Bean Validation 1.0(JSR-303)は、スプリングブックプロジェクトではヒベルナvalidator 5(http://hibernate.org/validator/)を持参していますので、この特性を使いやすいです。
コアのpom依存性:
注釈を使うことによって、入ってきたwebパラメータを迅速に検査します。ここでは一部の検査の知識を列挙しました。皆さんの勉強に役に立つように願っています。どうぞよろしくお願いします。
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パラメータを迅速に検査します。ここでは一部の検査の知識を列挙しました。皆さんの勉強に役に立つように願っています。どうぞよろしくお願いします。