来自 javax.validation.constraints 的注释无效(忽略)
Annotations from javax.validation.constraints not working (ignored)
我正在尝试使用 javax 约束在 运行 逻辑之前预先验证请求内容。
我已经尝试了所有可能的解决方案,但仍然无法让 javax 注释在 Spring 引导中工作。
import javax.validation.constraints.Min
import javax.validation.constraints.Pattern
data class LoginRequest (
@Credential //Custom constraint that works just fine
val credential: String,
@Min(value= 5)
val password: String,
@Pattern(regexp = Constants.Regex.DEVICE_ID_REGEX, message = "Invalid device ID")
val device: String
): Serializable
这是pom.xml
的一部分
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
.
.
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.17.Final</version>
</dependency>
这是控制器
import javax.validation.Valid
@PostMapping("/login")
fun userLoginEndpoint(@Valid @RequestBody loginRequest: LoginRequest): ResponseEntity<User> {
return authService.loginUser(loginRequest)
?.let{ ResponseEntity(it, HttpStatus.ACCEPTED)}
?: ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
}
我是不是做错了什么?
来自@JBNizet 评论
将 @Min(value= 5)
(当然还有其他验证注释)替换为 @field:Min(value= 5)
。
我正在尝试使用 javax 约束在 运行 逻辑之前预先验证请求内容。
我已经尝试了所有可能的解决方案,但仍然无法让 javax 注释在 Spring 引导中工作。
import javax.validation.constraints.Min
import javax.validation.constraints.Pattern
data class LoginRequest (
@Credential //Custom constraint that works just fine
val credential: String,
@Min(value= 5)
val password: String,
@Pattern(regexp = Constants.Regex.DEVICE_ID_REGEX, message = "Invalid device ID")
val device: String
): Serializable
这是pom.xml
的一部分<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
.
.
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.17.Final</version>
</dependency>
这是控制器
import javax.validation.Valid
@PostMapping("/login")
fun userLoginEndpoint(@Valid @RequestBody loginRequest: LoginRequest): ResponseEntity<User> {
return authService.loginUser(loginRequest)
?.let{ ResponseEntity(it, HttpStatus.ACCEPTED)}
?: ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
}
我是不是做错了什么?
来自@JBNizet 评论
将 @Min(value= 5)
(当然还有其他验证注释)替换为 @field:Min(value= 5)
。