@Validated @RequestBodyと一緒に使用@ExceptionHandler []春ブートレコードグローバルキャッチ例外

 

  

  3 @Validated @RequestBodyと@ExceptionHandlerは、良く校正パラメータで行うことができ、以下の具体的なデモを使用しました。

 

インターフェース

輸入org.springframework.validation.annotation.Validated; 
輸入org.springframework.web.bind.annotation.PostMapping。
輸入org.springframework.web.bind.annotation.RequestBody。
輸入org.springframework.web.bind.annotation.RequestMapping。

輸入com.xx.common.core.CommonResult; 
輸入com.xx.product.input.dto.ProductDetailCollectParam; 

輸入io.swagger.annotations.Api; 
輸入io.swagger.annotations.ApiOperation; 

@Api(タグ= "商品详情页接口") 値= "/製品")@RequestMapping 
パブリックインターフェイスProductDetailService { 

	( "/コレクト")@PostMapping 
	@ApiOperation(値= "收藏商品接口") 
	公共CommonResult collectProduct(@RequestBody @Validated ProductDetailCollectParam productDetailCollectParam)。
	
}

  

参照カテゴリへ

javax.validation.constraints.NotBlankインポート、

インポートio.swagger.annotations.ApiModel; 
インポートio.swagger.annotations.ApiModelProperty; 
インポートlombok.Data; 

@Data 
@ApiModel(値= "上院への製品詳細ページ")
のパブリッククラスProductDetailCollectParam { 

    @NotBlank(メッセージ= "ユーザーがOpenIDの空ではない")
    @ApiModelProperty(値= "ユーザのOpenID")
    プライベート文字列のOpenID、
    
    @NotBlank(メッセージ= "アイテムIDは空にすることはできません")
    @ApiModelProperty(値= "商品ID" )
    プライベートID列; 
}

  

グローバルキャッチ例外クラス

輸入org.springframework.web.bind.annotation.RestControllerAdvice。
輸入はjava.util.List; 
輸入javax.validation.ConstraintViolationException。
輸入org.springframework.validation.BindingResult; 
輸入org.springframework.validation.FieldError; 
輸入org.springframework.web.bind.MethodArgumentNotValidException。
輸入org.springframework.web.bind.annotation.ExceptionHandler; 
輸入com.xx.common.core.CommonResult; 

輸入cn.hutool.core.util.StrUtil; 
輸入lombok.extern.slf4j.Slf4j; 

SLF4J @ 
@RestControllerAdvice 
パブリッククラスGlobalExecptionHandler { 

    / ** 
     *全局异常拦截
     * @param E 
     * @return 
     * /
    @ExceptionHandler(Exception.class)
    パブリックCommonResultハンドラ(例外例外){ 
        
        StringBuilderのたerrMsg =新規のStringBuilder(); 
        //方法参数无效异常
        IF(MethodArgumentNotValidException instanceofの例外){ 
           BindingResult bindResult =((MethodArgumentNotValidException)例外).getBindingResult(); 
           一覧<FieldError> fieldErrorList = bindResult.getFieldErrors(); 
            fieldErrorList.forEach(fieldErrors - > { 
                FieldError fieldError = fieldErrors; 
                IF(StrUtil.isNotBlank(errMsg.toString())){ 
                    errMsg.append( ""); 
                }
                errMsg.append(fieldError.getDefaultMessage())。
            } 
           ); 
           
        }そうであれば(ConstraintViolationException instanceofの例外){ 
            //约束冲突异常
            
        } 
// log.error( "异常:"、例外)。
        リターンCommonResult.failed(errMsg.toString()); 
    }

  

参考リンク:https://www.cnblogs.com/cjyboy/p/11465876.html

参考リンク:https://blog.csdn.net/lzhcoder/article/details/98870852

おすすめ

転載: www.cnblogs.com/wbl001/p/11935636.html