bindingResult
来源:互联网 发布:网络媒介素养 名词解释 编辑:程序博客网 时间:2024/06/16 11:07
1. 起因:
半路接手的项目,原使用spring 3.1.0.CI-995(不知道当时怎么设计的,使用了这么一个过渡版本),但是现在想用注解来验证数据的有效性,正常情况下,使用@Valid验证也没有什么问题,但是现在有一个需求就是接收json后,验证对象的数据有效性,这时后台出错。
2. 解决方法
spring 3.1.0.CI-995 升级到 3.1.0.RELEASE。版本升级过程中也不是很顺利,调了很长时间才通过,过渡版本到正式版也有很多差异的地方。
2. 普通验证
JavaBean
Controller
注意:BindingResult 对象必须在 @Valid 的紧挨着的后面,否则接收不到错误信息。
3. 接收json的验证
Controller
方法1:
上面这种方式在spring3.2.x中没有试过,在3.1.0.RELEASE中是出错的。如果上面这种出错,可以使用下面方法。
方法2:
在此Controller中添加如下方法:
使用@ExceptionHandler捕获错误信息:
注意:MethodArgumentNotValidException 类,在spring 3.1.0.RELEASE 版本之后才有。
转载请注明:http://langmnm.iteye.com/blog/2078439
半路接手的项目,原使用spring 3.1.0.CI-995(不知道当时怎么设计的,使用了这么一个过渡版本),但是现在想用注解来验证数据的有效性,正常情况下,使用@Valid验证也没有什么问题,但是现在有一个需求就是接收json后,验证对象的数据有效性,这时后台出错。
2. 解决方法
spring 3.1.0.CI-995 升级到 3.1.0.RELEASE。版本升级过程中也不是很顺利,调了很长时间才通过,过渡版本到正式版也有很多差异的地方。
2. 普通验证
JavaBean
- 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
- @RequestMapping("/sender/message")
- @ResponseBody
- public ResponseBean sendMessage(@Valid Message messageBean, BindingResult bindingResult){
- ......
- if (bindingResult.hasErrors()) {
- System.out.println("验证失败!");
- }
- ......
- }
注意:BindingResult 对象必须在 @Valid 的紧挨着的后面,否则接收不到错误信息。
3. 接收json的验证
Controller
方法1:
- @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:
- @RequestMapping("/sender/message")
- @ResponseBody
- public ResponseBean sendMessage(@Valid @RequestBody Message messageBean){
- ......
- ......
- }
在此Controller中添加如下方法:
使用@ExceptionHandler捕获错误信息:
- // 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 版本之后才有。
转载请注明:http://langmnm.iteye.com/blog/2078439
0 0
- bindingResult
- 关于BindingResult
- Valid Type Name, BindingResult bindingResult
- Spring错误返回BindingResult
- SpringMVC BindingResult例子
- BindingResult错误返回显示失败
- springmvc 返回xml时结果异常BindingResult
- 关于BindingResult结果集的一些处理
- SpringMVC BindingResult验证框架Validation特殊用法
- Spring验证的错误返回------BindingResult
- Spring3 MVC: Neither BindingResult nor plain target object fo...
- jsp 页面怎么得到spring BindingResult 里面的错误消息?
- springMvc 的参数验证 BindingResult result 的使用
- Neither BindingResult nor plain target object for bean
- Neither BindingResult nor plain target object for bean
- Neither BindingResult nor plain target object for bean
- jsp 页面怎么得到spring BindingResult 里面的错误消息
- springMvc 的参数验证 BindingResult result 的使用
- 游戏开发之在UE4中编写C++代码控制角色
- WININET编程获得cookie的sessionID并保持sessionID不过期
- 第一章 数据引用与匿名存储
- VMware Workstation Pro与win7网络互通设置
- eclipse远程调试hadoop程序
- bindingResult
- 5、Linux系统的目录结构
- PHP的in_array() 函数使用详解
- XGBoost参数
- jdbc连接数据库
- Spring事务管理
- nginx+keepalived负载均衡之高可用
- Java多线程/并发05、synchronized应用实例:线程间操作共享数据
- 蓝桥杯 网络寻路