介绍
SpringMVC如何利用注解实现RequestParams校验?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<强>概述强>
Spring MVC支持Bean验证,通过这个验证技术,可以通过注解方式,很方便的对输入参数进行验证,之前使用的校验方式,都是基于Bean对象的,但是在@RequestParam中,没有豆对象,这样使得校验无法进行,可以通过使用@Validated注解,使得校验可以进行。
<>强校验Bean对象强>
一般校验Bean对象,为了可以自动的校验属性,可以通过两步解决:
包com.github.yongzhizhan.draftbox.model; 进口javax.validation.constraints.Size;/* * *带验证的对象 * @author zhanyongzhi 公共类Foo {*/私人字符串validString; @ (min=1, max=5) 公共字符串getValidString () { 返回validString; } 公共空间setValidString(最终字符串vValidString) { validString=vValidString; } }
@ResponseBody@RequestMapping (value=https://www.yisu.com/zixun/皏alidObject”方法=RequestMethod.POST) @ResponseStatus (HttpStatus.OK) 公共字符串validObject ( @RequestBody () @Valid Foo vFoo, BindingResult vBindingResult) { 返回vFoo.getValidString (); }
<>强校验RequestParams 强>
使用校验bean的方式,没有办法校验RequestParam的内容,一般在处理得到请求的时候,会使用下面这样的代码:
@ResponseBody@RequestMapping (value=https://www.yisu.com/zixun/皏alidString”方法=RequestMethod.GET) @ResponseStatus (HttpStatus.OK) 公共字符串validString ( @RequestParam (value=皊tr defaultValue=" ") 字符串vStr) { 返回vStr; }
使用@Valid注解,对RequestParam对应的参数进行注解,是无效的,需要使用@Validated注解来使得验证生效。操作步骤如下:
包com.github.yongzhizhan.draftbox.controller; 进口org.springframework.context.annotation.Bean; 进口org.springframework.http.HttpStatus; 进口org.springframework.stereotype.Component; 进口org.springframework.validation.beanvalidation.MethodValidationPostProcessor; 进口org.springframework.web.bind.annotation.ControllerAdvice; 进口org.springframework.web.bind.annotation.ExceptionHandler; 进口org.springframework.web.bind.annotation.ResponseBody; 进口org.springframework.web.bind.annotation.ResponseStatus; 进口javax.validation.ValidationException; @ControllerAdvice @ component 公开课GlobalExceptionHandler { @ bean 公共MethodValidationPostProcessor MethodValidationPostProcessor () { 返回新MethodValidationPostProcessor (); } @ExceptionHandler @ResponseBody @ResponseStatus (HttpStatus.BAD_REQUEST) 公共字符串处理(ValidationException异常例外){ System.out.println(“错误请求,“;+ exception.getMessage ()); 返回“糟糕的请求,“+ exception.getMessage (); } }
包com.github.yongzhizhan.draftbox.controller; 进口com.github.yongzhizhan.draftbox.model.Foo; 进口org.springframework.beans.factory.annotation.Value; 进口org.springframework.http.HttpStatus; 进口org.springframework.validation.BindingResult; 进口org.springframework.validation.annotation.Validated; 进口org.springframework.web.bind.annotation.RequestBody; 进口org.springframework.web.bind.annotation.RequestMapping; 进口org.springframework.web.bind.annotation.RequestMethod; 进口org.springframework.web.bind.annotation.RequestParam; 进口org.springframework.web.bind.annotation.ResponseBody; 进口org.springframework.web.bind.annotation.ResponseStatus; 进口org.springframework.web.bind.annotation.RestController; 进口javax.validation.Valid; 进口javax.validation.constraints.Size; @RestController @SuppressWarnings (“UnusedDeclaration") @Validated 公开课IndexController { @ResponseBody @RequestMapping (value=https://www.yisu.com/zixun/皏alidString”方法=RequestMethod.GET) @ResponseStatus (HttpStatus.OK) 公共字符串validString ( @RequestParam (value=皊tr defaultValue=" ") @ (min=1, max=3) 字符串vStr) { 返回vStr; } }
关于SpringMVC如何利用注解实现RequestParams校验问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。