`
JetMah
  • 浏览: 71263 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring MVC中修改校验的异常信息

阅读更多
原文出处: Spring MVC中修改校验的异常信息
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

 

使用一个例子来说明一下,Spring使用的是3.0.x:

  1. public class Account {
  2.     @ Pattern ( regexp = " [a-z0-9]{3,50} " )
  3.     private   String name ;
  4.  
  5.     @ NotNull
  6.     @ NumberFormat ( style = Style . CURRENCY )
  7.     private   BigDecimal balance = new BigDecimal ( " 1000 " ) ;
  8.  
  9.     @ DateTimeFormat ( style = " S- " )
  10.     @ Future
  11.     private   Date renewalDate = new Date ( new Date () . getTime () + 31536000000 L ) ;
  12.  
  13.     // 省略 getter & setter...
  14. }

 

接下来使用注解创建一个Controller:

  1. @ Controller
  2. @ RequestMapping ( value = " /account " )
  3. public   class AccountController {
  4.  
  5.     /**
  6.      * 如果view采用JSP的话<code>@ModelAttribute</code>注解可以省略,但是如果是使用Velocity或FreeMarker
  7.      * 的话必须要加上,而且<code>@Valid</code>注解和后面的BindingResult类型的参数之间不能有其他参数。
  8.      */
  9.     @ RequestMapping ( method = RequestMethod . POST )
  10.     public   String create ( @ Valid @ ModelAttribute ( " account " ) Account account , BindingResult result ) {
  11.         if   ( result . hasErrors ()) {
  12.             return   " account/createForm " ;
  13.         }
  14.         // ...
  15.         return   " redirect:/account/ " + account . getId () ;
  16.     }
  17.  
  18. }

另外还有一个view文件、配置文件等等,具体的可以查看Spring MVC Basic Sample

 

OK,接下来说重点。我参考上面的Spring MVC Basic Sample中的做法也做了一个类似的表单,在表单中的balance中输入非数字的时候旁边的错误信息会出现下面的异常信息:

Failed to convert property value of type java.lang.String to required type java.math.BigDecimal for property balance; nested exception is org.springframework.core.convert.ConversionFailedException: Unable to convert value “eff” from type java.lang.String to type java.math.BigDecimal; nested exception is java.lang.IllegalArgumentException: Unable to parse eff

 

这个就很郁闷了,明显是格式转换出错,但是列出来一堆的异常信息,对用户来说非常不友好。于是开始在Google中搜索也没有找到比较好的说法,后 来运行了Spring MVC Basic Sample,不显示上面的异常信息,而只是显示一句话:”could not be parsed“,这个效果正是我们所期待的。于是我将例子中的所有spring配置文件、Bean信息、Controller都做了对比,甚至JSP模板 都一样,但是一到我自己的项目中就会出现那个异常,当时非常郁闷。

 

后来无意中在Google中查到到了参考资料中的一篇帖子,里面提到只要在messages.properties文件中设置 typeMismatch属性就可以了,于是我猛然想到Spring MVC Basic Sample中也有个messages.properties文件,打开之后赫然看到果然有一条typeMismatch属性:

  1. typeMismatch=could not be parsed

 

原来是在这里设置的,真的很郁闷。还好,参考资料中的帖子中还提到可以设置具体的类型,比如可以这样设置:

  1. ## 全局的配置信息
  2. typeMismatch=输入的数据格式不正确
  3. ## 针对BigDecimal类型的错误信息
  4. typeMismatch.java.math.BigDecimal=请输入数字
  5. ## 针对Date类型的错误信息
  6. typeMismatch.java.util.Date=请在{0}中输入正确的日期

 

参考资料:
Spring MVC Data Binding and user-friendly error messages

0
0
分享到:
评论
1 楼 arong 2011-03-15  
int类型的字段为空,会自动匹配typeMismatch=输入的数据格式不正确 吗?

相关推荐

    Spring Mvc(1)Spring MVC 校验

    Spring Mvc(1)Spring MVC 校验 springmvc 基本校验 springmvc 自定义校验 springmvc 组合校验

    Spring MVC+MyBatis开发从入门到项目实战

    第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...

    spring mvc交互功能验证

    spring mvc交互功能验证,实战必备。 从实际项目中得出的经验,十分宝贵。

    springmvc01.zip_DEMO_JSON校验_spring mvc

    这个是入门spring mvc的Demo,是我学习spring mvc时写的,实现了spring mvc的输入校验,上传文件,和返回json数据时的配置,感觉对于初学者很有帮助

    Spring MVC 3.0实战指南.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...

    Spring mvc validator 需要的校验jar包

    spring mvc校验框架所需的几个jar包hibernate-validator-6.0.7.Final.jar、logging-3.1.0.CR2.jar、validator-api-2.0.2.jar

    Spring MVC的教程项目代码

    奉上学习Spring MVC 3.0的技术资料PPT资料,我花了两天写成,该资料根据最新拙作的《Spring 3.x 企业应用开发实战 》写成,仅需要1个小时左右的时间,就可以让你学习到Spring MVC 3.0的所有知识点和新功能,强烈推荐...

    基于Spring MVC的web框架 1.1.11

    工具类数据校验 jsp自定义标签 Spring自定义注解 默认requestMapping 1.1.2 代码生成器 1.1.3 首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis...

    详解在Spring MVC中使用注解的方式校验RequestParams

    本篇文章主要介绍了详解在Spring MVC中使用注解的方式校验RequestParams ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    springmvc数据验证

    这个能很简单并快捷的配置完成数据校验,提高安全性,并提高开发效率,以及提高系统的安全性以及高效性

    Spring3MVC注解教程.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...

    dwz+spring mvc+mybatis框架集结使用

    其中spring mvc+mybatis的部分我是参照别人的工程修改的,easiui的登录界面是从easiui官网下载的,验证码的生成是套用一位网友的代码,而数据库文件和验证码的校验是自己编写的。 其实登录界面只是我顺便做的,...

    Spring MVC数据校验.docx

    Controller 将处理用户请求,Controller 处理完用户请求,则返回 ModelAndView 对象给 DispatcherServlet 前端控制器。 从宏观角度考虑,...从微观考虑,Controller 是单个 Http 请求处理过程中的控制器。

    24 Spring Core vs Spring MVC参数校验慕课专栏1

    背景在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的

    Spring MVC 中 短信验证码功能的实现方法

    短信验证功能在各个网站应用都非常广泛,那么在springmvc中如何实现短信验证码功能呢?今天小编抽时间给大家介绍下Spring MVC 中 短信验证码功能的实现方法,一起看看吧

    Spring_MVC_051:Spring MVC 学习总结(五)——校验与文件上传

    Spring MVC 学习总结(五)——校验与文件上传 目录 2.2.7、范围 2.2.8、其它注解 2.3、注解控制器参数 1.4、在UI中添加错误标签 1.5、测试运行 三、使用jQuery扩展插件Validate实现前端校验 3.1、jQuery扩展插件...

    Spring MVC参数校验详解(关于`@RequestBody`返回`400`)

    主要介绍了Spring MVC参数校验的相关资料,主要是针对`@RequestBody`返回`400`的问题,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

    Spring + Spring MVC + Mybatis demo

    自己搭建的简单的Spring + Spring MVC + Mybatis框架 功能比较简单但是比较实用 初学者适用 需项目使用的请自行添加功能 集成功能 1.提供分页参数自动查询总数 2.实体校验(hibernate-validator) 3.单用户登录(监听...

    Spring MVC 员工管理系统

    Spring为展现层提供了一个优秀的Web框架——Spring MVC。和众多其它Web框架一样,它基于MVC设计理念,此外,由于它采用了松散耦合可插拔组件结构,具有比其它MVC框架更多的扩展性和灵活性。 Spring MVC框架围绕...

    大三(二)springmvc数据校验.zip

    大三(二)springmvc数据校验

Global site tag (gtag.js) - Google Analytics