簡單使用
@ApiOperation( value = "根據實施清單編碼辦理項查詢" )
@PostMapping( "getTransactPageList" )
@ApiImplicitParams( {
@ApiImplicitParam( name = "page", value = "頁碼", paramType = "query", dataType = "String" ),
@ApiImplicitParam( name = "limit", value = "數量", paramType = "query", dataType = "String" ),
@ApiImplicitParam( name = "taskCode", value = "實施清單編碼", paramType = "query", dataType = "String" ),
@ApiImplicitParam( name = "transactName", value = "辦理項名稱,默認為空", paramType = "query", dataType = "String" )
} )
public Object getTransactPageList( @NotBlank(message = "頁碼不能為空") String page,
@NotBlank(message = "每頁數目不能為空") String limit,
@NotBlank(message = "實施清單編碼不能為空") String taskCode,
String transactName )
{
return(zwwPhaseService.getTransactPageList( page, limit, taskCode, transactName ) );
}
在實體類中使用
@ApiModel( value = "根據實施清單編碼辦理項查詢參數" )
@Data
@Accessors( chain = true )
public class ProjectPageListDto {
@NotBlank( message = "頁數不能為空" ) /* 在實體屬性上標注校驗 */
@ApiModelProperty( value = "頁數" )
private String page;
@NotBlank( message = "每頁數目不能為空" )
@ApiModelProperty( value = "每頁數目" )
private String limit;
@ApiModelProperty( value = "部門編碼" )
private String deptCode;
@ApiModelProperty( value = "實施清單父級編碼" )
private String parentCode;
@ApiModelProperty( value = "實施清單名稱,模糊查詢,默認為空" )
private String taskName;
@ApiModelProperty( value = "事項主題" )
private String subject;
@ApiModelProperty( value = "網辦深度" )
private String networkDepth;
@ApiModelProperty( value = "面向對象1:自然人2:法人" )
private String serviceCode;
@NotBlank( message = "所屬區划不能為空" )
@ApiModelProperty( value = "所屬區划" )
private String regionCode;
@ApiModelProperty( value = "事項類型" )
private String taskType;
}
/* 在接收參數前標注@Validated */
@ApiOperation( value = "根據部門等條件查詢實施清單" )
@PostMapping( "getProjectPageList" )
public Object getProjectPageList( @Validated ProjectPageListDto projectPageListDto )
{
return(zwwPhaseService.getProjectPageList( projectPageListDto ) );
}
注意,使用時需要在controller頭部加上@Validated注解,否則不會生效
統一處理校驗異常
@ControllerAdvice
@Slf4j
public class ExceptionAdvice {
@ResponseBody
@ExceptionHandler(ConstraintViolationException.class)
public Response handleConstraintViolationException(ConstraintViolationException exception){
String msg = exception.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining());
Response response = new Response();
return response.setCode(StatusCode.PARAM_ERROR.getCode()).setMessage(msg);
}
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public Response handleMethodArgumentNotValidException(MethodArgumentNotValidException e){
String msg = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());
return new Response().setCode(StatusCode.PARAM_ERROR.getCode()).setMessage(msg);
}
@ExceptionHandler(BindException.class)
@ResponseBody
public Response handleBindException(BindException e){
String msg = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());
return new Response().setCode(StatusCode.PARAM_ERROR.getCode()).setMessage(msg);
}
}
遇到一個錯誤就拋出
有時候我們並不想等所有的都校驗完返回一堆錯誤,而是想讓它在碰到一個校驗錯誤時就直接拋出,可以如下配置
自定義配置類 ValidatorConfig
package com.zz.spxt.component.config;
import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
/**
* @Author: yang
* @Date: Create in 2020/6/17
* @Description:
* @Modify By:
*/
@Configuration
public class ValidatorConfig {
@Bean
public Validator validator(){
ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
.configure()
//failFast的意思只要出現校驗失敗的情況,就立即結束校驗,不再進行后續的校驗。
.failFast(true)
.buildValidatorFactory();
return validatorFactory.getValidator();
}
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();
methodValidationPostProcessor.setValidator(validator());
return methodValidationPostProcessor;
}
}
歡迎評論和留言