Skip to content

Commit

Permalink
优化
Browse files Browse the repository at this point in the history
  • Loading branch information
rstyro committed May 19, 2021
1 parent e7ab414 commit 25ff124
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
package top.lrshuai.validator.controller;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import top.lrshuai.validator.dto.TestDto;

import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;

@Validated
@RestController
public class TestController {

@GetMapping("/get")
public String getUser(@NotNull(message = "name 不能为空") String name, @Max(value = 100, message = "age不能大于100岁") Integer age) {
return "name: " + name + " ,age:" + age;
}

@PostMapping("/test")
public Object test(@RequestBody @Valid TestDto dto){
System.out.println("dto="+dto.toString());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
package top.lrshuai.validator.exception;

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import top.lrshuai.validator.commons.Result;

import javax.servlet.http.HttpServletRequest;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.xml.bind.ValidationException;
import javax.validation.ValidationException;

/**
* 描述:全局统一异常处理
Expand All @@ -24,27 +19,42 @@
@ControllerAdvice
public class GlobalExceptionHandlerAdvice {


/**
* 验证异常
* 参数验证异常
*/
@ExceptionHandler(value = {MethodArgumentNotValidException.class})
@ResponseBody
public Result handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
String errorMsg = "";
for (FieldError fieldError : bindingResult.getFieldErrors()) {
errorMsg += fieldError.getDefaultMessage() + ";";
}
String errorMsg = e.getBindingResult().getFieldError().getDefaultMessage();
if (!StringUtils.isEmpty(errorMsg)) {
log.error("MethodArgumentNotValidException:" + errorMsg);
return Result.error(errorMsg);
}
return Result.error();
log.error(e.getMessage(),e);
return Result.error(e.getMessage());
}

/**
* 参数验证异常
*/
@ExceptionHandler(value = {ValidationException.class})
public Result constraintViolationException(ValidationException e) {
if(e instanceof ConstraintViolationException){
ConstraintViolationException err = (ConstraintViolationException) e;
ConstraintViolation<?> constraintViolation = err.getConstraintViolations().stream().findFirst().get();
String messageTemplate = constraintViolation.getMessageTemplate();
if(!StringUtils.isEmpty(messageTemplate)){
return Result.error(messageTemplate);
}
}
log.error(e.getMessage(),e);
return Result.error(e.getMessage());
}

@ExceptionHandler(Exception.class)
@ResponseBody
public Result handlerException(Exception e) {
/**
* 默认异常
*/
@ExceptionHandler(value = Exception.class)
public Result defaultException(Exception e) {
log.error("系统异常:" + e.getMessage(), e);
return Result.error();
}
Expand Down

0 comments on commit 25ff124

Please sign in to comment.