bindingResult
生活随笔
收集整理的這篇文章主要介紹了
bindingResult
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 起因:?
??? 半路接手的項目,原使用spring 3.1.0.CI-995(不知道當時怎么設計的,使用了這么一個過渡版本),但是現(xiàn)在想用注解來驗證數(shù)據(jù)的有效性,正常情況下,使用@Valid驗證也沒有什么問題,但是現(xiàn)在有一個需求就是接收json后,驗證對象的數(shù)據(jù)有效性,這時后臺出錯。?
2. 解決方法?
??? spring 3.1.0.CI-995 升級到 3.1.0.RELEASE。版本升級過程中也不是很順利,調(diào)了很長時間才通過,過渡版本到正式版也有很多差異的地方。?
2. 普通驗證?
JavaBean?
Java代碼?? public?class?Message{?? ?? ????@NotEmpty(message?=?"Message?name?must?not?be?blank!")?? ????private?String?name;?? ?? ????@NotBlank(message?=?"Message?description?must?not?be?blank!")?? ????private?String?description;?? ?? ????public?Message()?{?? ????}?? ?? ????public?Message(String?name,?String?description)?{?? ????????this.name?=?name;?? ????????this.description?=?description;?? ????}?? ?? ????public?String?getName()?{?? ????????return?name;?? ????}?? ?? ????public?void?setName(String?name)?{?? ????????this.name?=?name;?? ????}?? ?? ????public?String?getDescription()?{?? ????????return?description;?? ????}?? ?? ????public?void?setDescription(String?description)?{?? ????????this.description?=?description;?? ????}?? ?? }??
Controller?
Java代碼?? @RequestMapping("/sender/message")?? ????@ResponseBody?? ????public?ResponseBean?sendMessage(@Valid?Message?messageBean,?BindingResult?bindingResult){?? ?? ????????......?? ?? ????????if?(bindingResult.hasErrors())?{?? ????????????System.out.println("驗證失敗!");?? ????????}?? ????????......?? }??
注意:BindingResult 對象必須在 @Valid 的緊挨著的后面,否則接收不到錯誤信息。 ?
3. 接收json的驗證?
Controller?
方法1:?
Java代碼?? @RequestMapping("/sender/message")?? ????@ResponseBody?? ????public?ResponseBean?sendMessage(@Valid?@RequestBody?Message?messageBean,?BindingResult?bindingResult){?? ????????......?? ?? ????????if?(bindingResult.hasErrors())?{?? ????????????System.out.println("驗證失敗!");?? ????????}?? ????????......?? }??
上面這種方式在spring3.2.x中沒有試過,在3.1.0.RELEASE中是出錯的。如果上面這種出錯,可以使用下面方法。?
方法2:?
Java代碼?? @RequestMapping("/sender/message")?? ????@ResponseBody?? ????public?ResponseBean?sendMessage(@Valid?@RequestBody?Message?messageBean){?? ????????......?? ?? ????????......?? }??
在此Controller中添加如下方法:?
使用@ExceptionHandler捕獲錯誤信息:?
Java代碼?? //?valid?exception?? @ExceptionHandler(MethodArgumentNotValidException.class)?? @ResponseBody?? public?ResponseBean?handleMethodArgumentNotValidException(?? ????????MethodArgumentNotValidException?ex)?{?? ????BindingResult?bindingResult?=?ex.getBindingResult();?? ????String?errorMesssage?=?"Invalid?Request:";?? ?? ????for?(FieldError?fieldError?:?bindingResult.getFieldErrors())?{?? ????????errorMesssage?+=?fieldError.getDefaultMessage()?+?",?";?? ????}?? ?????? ????System.out.println(bindingResult.getFieldError().getDefaultMessage());?? ????ResponseBean?response?=?new?ResponseBean();?? ????response.setErrcode("-11");?? ????response.setErrmsg(errorMesssage);?? ????return?response;?? }?? ?? //?JSON?convert?exception?? @ExceptionHandler(HttpMessageNotReadableException.class)?? @ResponseBody?? public?ResponseBean?handleHttpMessageNotReadableException(?? ????????HttpMessageNotReadableException?ex)?{?? ????ResponseBean?response?=?new?ResponseBean();?? ????response.setErrcode("-22");?? ????response.setErrmsg("json?convert?failure!");?? ????return?response;?? }??
注意:MethodArgumentNotValidException 類,在spring 3.1.0.RELEASE 版本之后才有。 ?
轉(zhuǎn)載請注明: http://langmnm.iteye.com/blog/2078439
??? 半路接手的項目,原使用spring 3.1.0.CI-995(不知道當時怎么設計的,使用了這么一個過渡版本),但是現(xiàn)在想用注解來驗證數(shù)據(jù)的有效性,正常情況下,使用@Valid驗證也沒有什么問題,但是現(xiàn)在有一個需求就是接收json后,驗證對象的數(shù)據(jù)有效性,這時后臺出錯。?
2. 解決方法?
??? spring 3.1.0.CI-995 升級到 3.1.0.RELEASE。版本升級過程中也不是很順利,調(diào)了很長時間才通過,過渡版本到正式版也有很多差異的地方。?
2. 普通驗證?
JavaBean?
Java代碼??
Controller?
Java代碼??
注意:BindingResult 對象必須在 @Valid 的緊挨著的后面,否則接收不到錯誤信息。 ?
3. 接收json的驗證?
Controller?
方法1:?
Java代碼??
上面這種方式在spring3.2.x中沒有試過,在3.1.0.RELEASE中是出錯的。如果上面這種出錯,可以使用下面方法。?
方法2:?
Java代碼??
在此Controller中添加如下方法:?
使用@ExceptionHandler捕獲錯誤信息:?
Java代碼??
注意:MethodArgumentNotValidException 類,在spring 3.1.0.RELEASE 版本之后才有。 ?
轉(zhuǎn)載請注明: http://langmnm.iteye.com/blog/2078439
總結(jié)
以上是生活随笔為你收集整理的bindingResult的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京内推 | Hulu机器学习应用平台团
- 下一篇: AD组策略管理