Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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验证不包括字段名_Java_Spring_Validation - Fatal编程技术网

Javax验证不包括字段名

Javax验证不包括字段名,java,spring,validation,Java,Spring,Validation,我们已经构建了一个API,在我们的模型中有一个字段 @Min(1) @Max(16) private Long demoField; 当我们向demoField提供17 它会在客户端给我们带来一个错误 “必须小于或等于16” 但是,当我们看到违规消息时,它包含字段名,消息如下所示 “demoField:必须小于或等于16” 因此,问题是为什么我们不能在客户端错误消息中获得字段名 我错过什么了吗 API构建在spring boot上,默认情况下不会通过。您可以实现自己的错误处理程序来定制传递回的

我们已经构建了一个API,在我们的模型中有一个字段

@Min(1) @Max(16)
private Long demoField;
当我们向demoField提供17 它会在客户端给我们带来一个错误

“必须小于或等于16”

但是,当我们看到违规消息时,它包含字段名,消息如下所示

“demoField:必须小于或等于16”

因此,问题是为什么我们不能在客户端错误消息中获得字段名

我错过什么了吗


API构建在spring boot上,默认情况下不会通过。您可以实现自己的错误处理程序来定制传递回的消息,例如使用@ControllerAdvice

一种方法是只指定消息: @最小值(值=5,消息=“年龄必须至少为5”)

在这种情况下,在@ControllerAdvice中,您只需要读取getDefaultMessage()

如果您不想手动添加默认消息,那么方法将是实现以下内容(使用适当的空检查等):

package com.example.demo;
导入org.springframework.http.HttpHeaders;
导入org.springframework.http.HttpStatus;
导入org.springframework.http.ResponseEntity;
导入org.springframework.validation.BindException;
导入org.springframework.web.bind.annotation.ControllerAdvice;
导入org.springframework.web.context.request.WebRequest;
导入org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@控制器建议
公共类GlobalExceptionHandler扩展了ResponseEntityExceptionHandler{
@凌驾
保护响应手柄异常(
BindException ex、HttpHeaders标头、HttpStatus状态、WebRequest请求){
返回新响应(
例如getFieldError().getField()+“:”+ex.getFieldError().getDefaultMessage(),
标题,
地位);
}
}
package com.example.demo;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

    @Override
    protected ResponseEntity<Object> handleBindException(
            BindException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
        return new ResponseEntity<>(
                ex.getFieldError().getField() + ": " + ex.getFieldError().getDefaultMessage(),
                headers,
                status);
    }
}