Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.validation.constraints中的注释不起作用(已忽略)_Java_Spring Boot_Kotlin_Annotations_Constraints - Fatal编程技术网

javax.validation.constraints中的注释不起作用(已忽略)

javax.validation.constraints中的注释不起作用(已忽略),java,spring-boot,kotlin,annotations,constraints,Java,Spring Boot,Kotlin,Annotations,Constraints,我试图使用javax约束在运行逻辑之前预先验证请求内容 我已经尝试过任何可能的解决方案,但仍然无法在Spring引导中使用javax注释 import javax.validation.constraints.Min import javax.validation.constraints.Pattern data class LoginRequest ( @Credential //Custom constraint that works just fine v

我试图使用javax约束在运行逻辑之前预先验证请求内容

我已经尝试过任何可能的解决方案,但仍然无法在Spring引导中使用javax注释

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>

org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
spring引导启动器数据jpa
.
.
javax.validation
验证api
2.0.1.最终版本
org.hibernate.validator
休眠验证器
6.0.17.1最终版本
org.hibernate.validator
hibernate验证程序注释处理器
6.0.17.1最终版本
这是控制器

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()
    }
import javax.validation.Valid
@后映射(“/login”)
有趣的用户登录点(@Valid@RequestBody loginRequest:loginRequest):ResponseEntity{
返回authService.loginUser(loginRequest)
?.让{ResponseEntity(it,HttpStatus.ACCEPTED)}
?:ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
}

我做错什么了吗?

来自@JBNizet comment


@Min(value=5)
(当然还有其他验证注释)替换为
@field:Min(value=5)

@Min(value=5)
(当然还有其他验证注释)替换为
@field:Min(value=5)
@jbnize是的,它起作用了!谢谢然而,我仍然不明白这会有什么不同。有什么线索吗?如果没有指定
@field
,那么注释的是构造函数参数AFAIK。但Spring会在构建对象后验证它。所以需要注释的是字段。