posts - 176, comments - 240, trackbacks - 0, articles - 7

    在witrix平台中,validate.js提供了完整的客户端输入校验框架。其基本思想是为每个输入控件指定验证函数(validator属性),在提交Form的时候自动调用该验证函数即可。
<form action="test.jsp">
<input type="text" name="userName" validator="js.validate.checkNotEmpty(value,'用户名')" />
<input type="button" value="submit" onclick="js.validate.submitForm(this.form)" />
</form>
    witrix平台的一个基本设计原则是模块的独立性,不仅各个模块之间的耦合很少,我们还尽量避免使用配置文件。与struts等web框架不同, witrix的输入校验不依赖于外部配置文件,可以完全独立的使用。虽然jsplet框架也提供了服务器端校验的支持,但在实际使用过程中却很少使用。客 户端校验提供了更好的用户体验。而如果我们需要进一步确保业务逻辑的稳定性,例如避免用户伪造客户端url请求,数据校验需要在业务逻辑对象层进行而不应 是在解析用户请求的时候。针对每个form所写的配置文件有很多不方便的地方,例如witrix平台支持从数据库描述文件直接生成操作界面的快速开发,校 验规则在数据描述文件中指定,而同一个字段可能在多个界面中出现,如果针对Form写校验配置文件,就会出现冗余,而难以保证结构的同步。实际上,一个结 构在界面上表现一次,又在校验配置文件中表现一次,就必然会出现同步问题,解决的方法就是面向对象设计中的对象化,局部化,而不是一个个分离的处理层。

    很多客户端的校验框架使用的是一个万能的校验函数,通过参数不同来实现不同校验。例如
<input type="text" name="userName" validateType="required" />
这种方式的扩展性不好。正如面向对象设计中的通常做法,我们通过使用回调函数(虚拟函数)来实现可扩展的设计。

只有注册用户登录后才能发表评论。


网站导航: