Java的通用参数验证机制
在开发中,其实经常要对输入参数进行检验。比如对于login(userid,password)要检查
if(userid.length<4 || password.length<6)
throw runtimeexception.
如果接收的是一个对象参数,save(User user),也要进行检验,一般的土办法是如下:
if(user.getName().isEmpty())
return false;
....
当然,对参数进行检验是一件很烦人的事情。大多数情况下,只在系统的前端进行检验。以一般SSH web系统为例,MVC层是需要参数检验的,到了service和dao层一般就不需要了,它们假设controller层做了足够的检验了。除了MVC,还有其他场景,比如excel文件导入,web service远程调用等。总之,凡是在系统边界处的输入参数都要检验。
?
最近我才了解到,在java里有一个通用的validation机制,可以对pojo对象,或者说java bean进行数据验证。Spring也对其进行支持。参见http://static.springsource.org/spring/docs/2.0.x/reference/validation.html。
内容概括如下,
- 通过PropertyEditor可以把各种String转化为整数,枚举,浮点等基本类型。也可以自定义Editor。为什么要这样做呢,因为系统间的交互,往往是String方式传输。比如xml,csv,http request。
可以自定义Validator进行一对一的检验,也支持注解声明。
总之,这套通用的验证机制,结合资源文件,统一了原本复杂或者混乱的验证办法。回忆一下曾经在Struts1下的form验证,sprign mvc的controller验证,其实都可以转化为对pojo的验证。
?