RCP数据模型验证框架
Struts(for)RCP(http://struts4rcp.googlecode.com)发布了0.1版本,但还缺少一个重要元素,那就是数据模型验证框架,MVC框架总是少不了它。
验证框架需要实现哪些功能?
1. 对Action执行过程中的数据进行透明化检验,Action只需声明验证规则,而不参与验证过程。
2. 可以服务器端验证,也以可客户端验证,或者数据模型自验证。
3. 验证规则捆绑方便,可以使用注解,也可以使用XML配置,以及直接编码捆绑。
4. 验证规则可自定义,并且内置规则丰富。
5. 验证出错信息国际化。
现成的验证框架已经不少,像Struts, WebWork, Hibernate, JSF等都提供了验证框架,是否可以重用?
由于B/S开发的盛行,大多数已有验证框架都向B/S结构倾斜,虽然它们也能验证C/S结构应用。
而且验证框架众多,不易选择大众口味,所以还是由框架本身提供,然后适配到其它验证框架。
如果重新定义验证框架,它应该属于哪个包?
它并不是MVC控制器框架必需的,而且它需要在服务器端和客户端同时使用,
甚至给其它第三方包复用,所以,它应该放在util包内,与序列化器相似。
最后决定放在com.googlecode.struts4rcp.util.validator包下。
首先,需要定义验证器接口,它将作为验证框架的中心接口,如:
第三种方式,直接编码构建规则:public class LoginAction implements ValidationAction<Account, User> {public Validator getValidator() {return new ValidatorChain(new RequiredValidator(), // 传入model不能为nullnew FieldValidator("username", new ValidatorChain(new RequiredValidator(), // 用户名不能为空new LengthValidator(3, 20))), // 用户名长度限制new FieldValidator("password", new ValidatorChain(new RequiredValidator(), new LengthValidator(6, 20))));}public User execute(Account account) throws Exception {// ......}}