1.最简单配置
2.国际化 提示信息写到配置文件配置
3.简单注解 介绍 注解 运行时检查
@AssertFalse 被注解的元素必须为false
@AssertTrue 被注解的元素必须为true
@DecimalMax(value) 被注解的元素必须为一个数字,其值必须小于等于指定的最小值
@DecimalMin(Value) 被注解的元素必须为一个数字,其值必须大于等于指定的最小值
@Digits(integer=, fraction=) 被注解的元素必须为一个数字,其值必须在可接受的范围内
@Future 被注解的元素必须是日期,检查给定的日期是否比现在晚
@Max(value) 被注解的元素必须为一个数字,其值必须小于等于指定的最小值
@Min(value) 被注解的元素必须为一个数字,其值必须大于等于指定的最小值
@NotNull 被注解的元素必须不为null
@Null 被注解的元素必须为null
@Past(java.util.Date/Calendar) 被注解的元素必须过去的日期,检查标注对象中的值表示的日期比当前早
@Pattern(regex=, flag=) 被注解的元素必须符合正则表达式,检查该字符串是否能够在match指定的情况下被regex定义的正则表达式匹配
@Size(min=, max=) 被注解的元素必须在制定的范围(数据类型:String, Collection, Map and arrays)
@Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组, 那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验
@CreditCardNumber 对信用卡号进行一个大致的验证
@Email 被注释的元素必须是电子邮箱地址
@Length(min=, max=) 被注解的对象必须是字符串的大小必须在制定的范围内
@NotBlank 被注解的对象必须为字符串,不能为空,检查时会将空格忽略
@NotEmpty 被注释的对象必须为空(数据:String,Collection,Map,arrays)
@Range(min=, max=) 被注释的元素必须在合适的范围内 (数据:BigDecimal, BigInteger, String, byte, short, int, long and 原始类型的包装类 )
@URL(protocol=, host=, port=, regexp=, flags=) 被注解的对象必须是字符串,检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件
@Validated
public class OwnerController extends BaseController {
@RequestMapping(value = "/test", method = { RequestMethod.GET, RequestMethod.POST })
public void test(@DecimalMin("0") Integer status, @NotBlank String name) {
}
}
4.2 参数为 bean的时候 在bean前加 @Valid
@RequestMapping(value = "/test", method = { RequestMethod.GET, RequestMethod.POST })
public void test(@Valid ApprovalForm form) {
}
public class ApprovalForm implements Serializable {
@NotEmpty
private List idList;
}
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ValidationException;
import org.slf4j.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindException;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import cn.deepfashion.common.domain.response.ErrorResponse;
import cn.deepfashion.common.enums.ErrorCodeEnum;
import cn.deepfashion.controller.BaseController;
import cn.deepfashion.manager.logger.DeepFashionLoggerFactory;
/*****************************************************
* 业务异常
*
* @author sjw
*
*/
@ControllerAdvice
@Component
public class ExceptionController extends BaseController {
private final Logger logger = DeepFashionLoggerFactory.getLogger(ExceptionController.class);
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
/**
* 非法参数验证统一处理
*
* @author zmh
* @param exception
* @param request
* @param response
* @return 2017年4月28日
*/
@ExceptionHandler(value = { ValidationException.class, BindException.class })
public ModelAndView handleValidationException(Exception exception, HttpServletRequest request,
HttpServletResponse response) {
logger.warn("handleValidationException::illegal param,servletPath={}, param={}", request.getServletPath(),
JSON.toJSONString(request.getParameterMap()));
if (isAjax(request)) {
ErrorResponse