Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
@NotNull@NotBlank@Valid在spring引导rest api验证中不起作用_Spring_Spring Boot_Rest_Spring Mvc - Fatal编程技术网

@NotNull@NotBlank@Valid在spring引导rest api验证中不起作用

@NotNull@NotBlank@Valid在spring引导rest api验证中不起作用,spring,spring-boot,rest,spring-mvc,Spring,Spring Boot,Rest,Spring Mvc,@NotNull、@NotEmpty、@NotBlank注释在我的rest控制器中不起作用。我的要求是限制控制器的流量,当我在没有必要参数的情况下点击控制器时,会出现400错误。但当我将null或空头传递给我的控制器时,我并没有得到400错误。我的控制器点击我的处理程序类,这不是预期的行为 下面是我的控制器 @RestController @RequestMapping("/intelligent-banking") public class CrossSellOffersRetrievalCo

@NotNull、@NotEmpty、@NotBlank注释在我的rest控制器中不起作用。我的要求是限制控制器的流量,当我在没有必要参数的情况下点击控制器时,会出现400错误。但当我将null或空头传递给我的控制器时,我并没有得到400错误。我的控制器点击我的处理程序类,这不是预期的行为

下面是我的控制器

@RestController
@RequestMapping("/intelligent-banking")
public class CrossSellOffersRetrievalController {


    @Autowired
    private CrossSellOffersRetrievalHandler crossSellOffersRetrievalHandler;

    @Autowired
    Environment env;

    @GetMapping(value = "/cross-sell-offers/{interactionPoint}", produces = { MediaType.APPLICATION_JSON_VALUE })
    public ResponseEntity<CrossSellOffersRetrievalResponse> getApplicableOffers(
            @RequestHeader(value = "channelId", required = true) @Valid String channelId,
            @RequestHeader(value = "clientId", required = false) String clientId,
            @RequestHeader(value = "actionId", required = true) @NotNull @NotEmpty String actionId,
            @RequestHeader(value = "customerId", required = true) @NotNull @NotBlank String customerId,
            @RequestHeader(value = "cinSuffix", required = true) @NotNull @NotBlank String cinSuffix,
            @RequestHeader(value = "sessionId", required = true) @NotNull @NotBlank String sessionId,
            @RequestHeader(value = "countryCode", required = true) @NotNull @NotBlank String countryCode,
            @PathVariable(value = "interactionPoint", required = true) @NotNull @NotBlank String interactionPoint,
            @RequestParam(value = "numberOfOffers", required = false) Integer numberOfOffers)
            throws CrossSellOffersException {
       try {

                CrossSellOffersRetrievalResponse crossSellOffersResponse = crossSellOffersRetrievalHandler.getCrossSellOffersRetrievalResponse(channelId,
                        customerId, cinSuffix, countryCode, interactionPoint, sessionId, numberOfOffers);
                HttpHeaders httpHeaders = new HttpHeaders();
                httpHeaders.set("CustomerId", customerId);
                return new ResponseEntity<>(crossSellOffersResponse, httpHeaders, HttpStatus.OK);
        } 
        catch (Exception e) {
            LOGGER.error("Inside CrossSellOffersRetrievalController::getApplicableOffers::Exception - Exception occurred at getApplicableOffers: {} ",e.getMessage());
            throw new CrossSellOffersException(Constants.ERROR_CODE, e.getMessage());
        }
    }
}
@RestController
@请求映射(“/智能银行”)
公共类CrossSellOfferRetrievalController{
@自动连线
私有CrossSellOfferRetrievalHandler CrossSellOfferRetrievalHandler;
@自动连线
环境环境;
@GetMapping(value=“/cross-sell-offers/{interactionPoint}”,products={MediaType.APPLICATION\u-JSON\u-value})
公共响应获得适用的优惠(
@RequestHeader(value=“channelId”,required=true)@有效字符串channelId,
@RequestHeader(value=“clientId”,required=false)字符串clientId,
@RequestHeader(value=“actionId”,required=true)@NotNull@NotEmpty String actionId,
@RequestHeader(value=“customerId”,required=true)@NotNull@NotBlank字符串customerId,
@RequestHeader(value=“cinSuffix”,required=true)@NotNull@NotBlank字符串cinSuffix,
@RequestHeader(value=“sessionId”,required=true)@NotNull@NotBlank字符串sessionId,
@RequestHeader(value=“countryCode”,required=true)@NotNull@NotBlank字符串countryCode,
@PathVariable(value=“interactionPoint”,required=true)@NotNull@NotBlank字符串interactionPoint,
@RequestParam(value=“numberOfOffers”,required=false)整数numberOfOffers)
抛出CrossSellOfferException{
试一试{
CrossSellOfferRetrievalResponse CrossSellOfferResponse=CrossSellOfferRetrievalHandler.GetCrossSellOfferRetrievalResponse(channelId,
customerId、cinSuffix、countryCode、interactionPoint、sessionId、numberOfOffers);
HttpHeaders HttpHeaders=新的HttpHeaders();
httpHeaders.set(“CustomerId”,CustomerId);
返回新的ResponseEntity(CrossSellOfferResponse、httpHeaders、HttpStatus.OK);
} 
捕获(例外e){
LOGGER.error(“CrossSellOfferRetrievalController::GetApplicatableOffers::Exception内部-GetApplicatableOffers:{}”发生异常,e.getMessage());
抛出新的CrossSellOfferException(Constants.ERROR_代码,例如getMessage());
}
}
}

您需要通过向控制器添加
@Validated
注释来启用请求参数和路径变量的验证,以便执行验证。

您需要通过依次向控制器添加
@Validated
注释来启用请求参数和路径变量的验证用于执行验证。

使用此maven依赖项以使其正常工作

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    <version>2.3.2.RELEASE</version>
</dependency> 
                                                                    

org.springframework.boot
弹簧启动启动器验证
2.3.2.2发布

使用此maven依赖项以使其正常工作

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    <version>2.3.2.RELEASE</version>
</dependency> 
                                                                    

org.springframework.boot
弹簧启动启动器验证
2.3.2.2发布
在spring boot中使用了此验证依赖项,但由于spring boot的版本升级到2.4.0,因此无法工作
javax.validation
验证api
2.0.1.最终版本
用spring boot starter验证替换了它,它工作了。
org.springframework.boot
弹簧启动启动器验证
2.4.0
需要通过向控制器添加@Validated注释来启用请求参数和路径变量的验证,以便执行验证。
在spring boot中使用了此验证依赖项,但由于spring boot的版本升级到2.4.0,因此无法工作
javax.validation
验证api
2.0.1.最终版本
用spring boot starter验证替换了它,它工作了。
org.springframework.boot
弹簧启动启动器验证
2.4.0
需要通过向控制器添加@Validated注释来启用请求参数和路径变量的验证,以便执行验证。

检查这是否有帮助:。很可能是hibernate-validator.jar未正确引用。将
spring boot starter验证添加为依赖项。因为从Spring Boot 2.3.0起不再包含该功能(或者您手动包含依赖项而不是启动器,并且没有实现)。请检查这是否有帮助:。很可能是hibernate-validator.jar未正确引用。将
spring boot starter验证添加为依赖项。因为从SpringBoot2.3.0开始,它就不再包含了(或者您手动包含依赖项而不是启动器,并且没有实现)。