Appearance
独自バリデーション向けアノテーションを作成
バリデーションに使うアノテーションを自作します。
事前準備
下記依存関係を追加します:
xml
<!-- Source: https://mvnrepository.com/artifact/jakarta.validation/jakarta.validation-api -->
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>3.1.1</version>
<scope>compile</scope>
</dependency>
<!-- Source: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>4.0.6</version>
<scope>compile</scope>
</dependency>実装
指定したパラメータが特定の値であるかをチェックするアノテーションを作成します。
- アノテーション
kotlin
package nob.example.easyapp.validator
import jakarta.validation.Constraint
import jakarta.validation.Payload
import kotlin.reflect.KClass
/**
* サンプルのバリデーションです。
*/
@MustBeDocumented
@Constraint(validatedBy = [SampleValidator::class])
@Target(AnnotationTarget.FIELD)
@Retention(AnnotationRetention.RUNTIME)
annotation class Sample(
val message: String = "バリデーションエラーが発生しました。",
val groups: Array<KClass<*>> = [],
val payload: Array<KClass<out Payload>> = []
)- バリデーションの実装
kotlin
package nob.example.easyapp.validator
import jakarta.validation.ConstraintValidator
import jakarta.validation.ConstraintValidatorContext
class SampleValidator : ConstraintValidator<Sample, String> {
override fun isValid(value: String?, context: ConstraintValidatorContext?): Boolean {
// ユーザ名"nob"は許可しない
return !value.equals("nob")
}
}