客户端和服务器端都需要校验用户输入,同一套校验逻辑最好不要写两遍,可以都定义在服务器端,客户端(浏览器)通过 ajax 方式来复用。
为了有效的支持上述应用场景,这次增强在 FormBinder 入口类新增了 validate 方法,并加入了多个 validate 相关的选项支持:
eagerCheck,检查出尽量多的数据错误(默认是,一发现错误就返回)
ignoreEmpty,忽略空值(还没开始填的输入框,就不要报出一堆错了)
touched,数据项全名列表(和 ignoreEmpty 相结合,如果已经填过,必填项就不能为空了)
这次增强还加入了 options 支持,以后类似的扩展支持都可以在不破坏现有接口的前提下加入。
对了,这次的增强对现有应用代码应该没有影响。
更多细节,请查阅项目文档、源码和测试用例。
========================================
form-binder 是一个容易使用和定制的微型数据绑定和校验框架。
它有如下特点:
非常轻量,总共才 700 多行代码(框架 + 内置扩展)
容易使用,使用过程没有冗余代码,所见及所得
高度可定制,你可以扩展几乎每一个执行点
容易扩展,每个扩展接口都只是一个 FunctionN 的别名
不可变性,让你可以安全的共享/(嵌套)复用 mapping定义对象
form-binder 一开始是为我一个基于 Scalatra 的项目准备的,用起来会比 Scalatra 内置的 Command 框架方便不少。但是你完全可以把它用在其他地方,因为它不依赖 Scalatra 的代码(甚至都没有对 Scalatra 的集成做内置支持),非常容易和其他框架集成。
它的示例代码以及组件、可扩展点如下:

更多细节请浏览项目主页。
暂无更多评论