javascript
在Spring MVC中使用注解的方式校验RequestParams
概述
??Spring MVC支持Bean Validation,通過這個(gè)驗(yàn)證技術(shù),可以通過注解方式,很方便的對(duì)輸入?yún)?shù)進(jìn)行驗(yàn)證,之前使用的校驗(yàn)方式,都是基于Bean對(duì)象的,但是在@RequestParam中,沒有Bean對(duì)象,這樣使得校驗(yàn)無法進(jìn)行,可以通過使用@Validated注解,使得校驗(yàn)可以進(jìn)行。
校驗(yàn)bean對(duì)象
??一般校驗(yàn)bean對(duì)象,為了可以自動(dòng)的校驗(yàn)屬性,可以通過兩步解決:
一、聲明對(duì)象
package com.github.yongzhizhan.draftbox.model;import javax.validation.constraints.Size;/*** 帶驗(yàn)證的對(duì)象* @author zhanyongzhi*/public class Foo {private String validString;(min = 1, max = 5)public String getValidString() {return validString;}public void setValidString(final String vValidString) {validString = vValidString;} }二、通過@Valid注解使用對(duì)象
(value = "validObject", method = RequestMethod.POST) (HttpStatus.OK) public String validObject(() Foo vFoo, BindingResult vBindingResult){return vFoo.getValidString(); }校驗(yàn)RequestParams
??使用校驗(yàn)bean的方式,沒有辦法校驗(yàn)RequestParam的內(nèi)容,一般在處理Get請(qǐng)求的時(shí)候,會(huì)使用下面這樣的代碼:
(value = "validString", method = RequestMethod.GET) (HttpStatus.OK) public String validString((value = "str", defaultValue = "")String vStr){return vStr; }??使用@Valid注解,對(duì)RequestParam對(duì)應(yīng)的參數(shù)進(jìn)行注解,是無效的,需要使用@Validated注解來使得驗(yàn)證生效。操作步驟如下:
一、聲明錯(cuò)誤處理類
package com.github.yongzhizhan.draftbox.controller;import org.springframework.context.annotation.Bean; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus;import javax.validation.ValidationException;@ControllerAdvice @Component public class GlobalExceptionHandler {@Beanpublic MethodValidationPostProcessor methodValidationPostProcessor() {return new MethodValidationPostProcessor();}@ExceptionHandler@ResponseBody@ResponseStatus(HttpStatus.BAD_REQUEST)public String handle(ValidationException exception) {System.out.println("bad request, " + exception.getMessage());return "bad request, " + exception.getMessage();} }二、聲明@Validated并加上校驗(yàn)注解
package com.github.yongzhizhan.draftbox.controller;import com.github.yongzhizhan.draftbox.model.Foo; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid; import javax.validation.constraints.Size;@RestController @SuppressWarnings("UnusedDeclaration") @Validated public class IndexController {@ResponseBody@RequestMapping(value = "validString", method = RequestMethod.GET)@ResponseStatus(HttpStatus.OK)public String validString(@RequestParam(value = "str", defaultValue = "")@Size(min = 1, max = 3)String vStr){return vStr;} }代碼
在github中查看完整代碼
參考
Bean Validation 技術(shù)規(guī)范特性概述
Validation, Data Binding, and Type Conversion
來源:?http://www.cnblogs.com/xiaohunshi/p/5693449.html
來自為知筆記(Wiz)
轉(zhuǎn)載于:https://www.cnblogs.com/jeffen/p/6402475.html
總結(jié)
以上是生活随笔為你收集整理的在Spring MVC中使用注解的方式校验RequestParams的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建设银行冲正什么意思 交易失败被退钱
- 下一篇: gradle idea java ssm