引入服务器端表单验证service,是通过在webx.xml中通过服务引入的方式完成的。例如,在user相关信息的表单验证的产生过程是这样的:webx-user.xml通过 <beans:import resource="user/form.xml" />引入form,xml表单验证配置,在form.xml中,通过services:form开始了表单的验证工作。

Webx表单验证服务主张验证逻辑和页面表现逻辑完全分离。所有的验证规则都写在一个单独的配置文件中 —— 页面模板是不需要关心这些验证规则的。当你需要修改验证规则时,只需要修改独立的配置文件就可以了,并不用修改页面模板。

开始配置表单验证服务。 
每个表单验证服务可包含多个groups。 
每个group可包含多个fields。 
每个field可包含多个validators。

user/form.xml具体配置如下: 
<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:services="http://www.alibaba.com/schema/services" 
    xmlns:fm-conditions="http://www.alibaba.com/schema/services/form/conditions" 
    xmlns:fm-validators="http://www.alibaba.com/schema/services/form/validators" 
    xmlns="http://www.alibaba.com/schema/services/form/validators" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation=" 
        http://www.alibaba.com/schema/services http://localhost:8080/schema/services.xsd 
        http://www.alibaba.com/schema/services/form/conditions http://localhost:8080/schema/services-form-conditions.xsd 
        http://www.alibaba.com/schema/services/form/validators http://localhost:8080/schema/services-form-validators.xsd 
        http://www.springframework.org/schema/beans http://localhost:8080/schema/www.springframework.org/schema/beans/spring-beans.xsd 
    ">

<services:form postOnlyByDefault="true"> 
        <!-- 
          - =============================================== 
          - 用来检查csrf token。 
          - =============================================== 
         --> 
        <services:group name="csrfTokenCheckGroup"> 
            <services:field name="csrfToken"> 
                <csrf-validator> 
                    <message>提交的数据已过期</message> 
                </csrf-validator> 
            </services:field> 
        </services:group> 
        <!-- 
          - =============================================== 
          - 登录表单 
          - =============================================== 
         --> 
        <services:group name="login" extends="csrfTokenCheckGroup"> 
            <services:field name="loginError"> 
                <custom-error id="invalidUserOrPassword"> 
                    <message>用户名或密码不正确,请重新输入</message> 
                </custom-error> 
            </services:field> 
            <services:field name="userId" displayName="登录名"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="password" displayName="密码"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
        </services:group> 
        <!-- 
          - =============================================== 
          - 注册表单 
          - =============================================== 
         --> 
        <services:group name="register" extends="csrfTokenCheckGroup"> 
            <services:field name="registerError"> 
                <custom-error id="duplicatedUserId"> 
                    <message>登录名“${userId}”已经被人注掉了,请尝试另一个名字</message> 
                </custom-error> 
            </services:field> 
            <services:field name="userId" displayName="登录名"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
                <regexp-validator pattern="^[A-Za-z_][A-Za-z_0-9]*$"> 
                    <message>${displayName} 必须由字母、数字、下划线构成</message> 
                </regexp-validator> 
                <string-length-validator minLength="4" maxLength="10"> 
                    <message>${displayName} 最少必须由${minLength}个字组成,最多不能超过${maxLength}个字</message> 
                </string-length-validator> 
            </services:field> 
            <services:field name="password" displayName="密码"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
                <string-length-validator minLength="4" maxLength="10"> 
                    <message>${displayName} 最少必须由${minLength}个字组成,最多不能超过${maxLength}个字</message> 
                </string-length-validator> 
                <string-compare-validator notEqualTo="userId"> 
                    <message>${displayName} 不能与 ${userId.displayName} 相同</message> 
                </string-compare-validator> 
            </services:field> 
            <services:field name="passwordConfirm" displayName="密码验证"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
                <string-compare-validator equalTo="password"> 
                    <message>${displayName} 必须和 ${password.displayName} 相同</message> 
                </string-compare-validator> 
            </services:field> 
        </services:group> 
        <!-- 
          - =============================================== 
          - 注册account信息表单 
          - =============================================== 
         --> 
        <services:group name="registerContact" extends="csrfTokenCheckGroup"> 
            <services:field name="firstName" displayName="名字" propertyName="account.firstName"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="lastName" displayName="姓氏" propertyName="account.lastName"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="address1" displayName="地址" propertyName="account.address1"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="address2" displayName="地址" propertyName="account.address2"> </services:field> 
            <services:field name="city" displayName="城市" propertyName="account.city"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="zip" displayName="邮编" propertyName="account.zip"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
                <number-validator> 
                    <message>${displayName} 必须是数字</message> 
                </number-validator> 
            </services:field> 
            <services:field name="state" displayName="省份" propertyName="account.state"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="country" displayName="国家" propertyName="account.country"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="phone" displayName="电话" propertyName="account.phone"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="email" displayName="电子邮件" propertyName="account.email"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
                <mail-address-validator> 
                    <message>${displayName} 必须是合法的e-mail</message> 
                </mail-address-validator> 
            </services:field> 
        </services:group> 
        <!-- 
          - =============================================== 
          - 注册credit信息表单 
          - =============================================== 
         --> 
        <services:group name="registerCredit" extends="csrfTokenCheckGroup"> 
            <services:field name="creditCardNumber" displayName="信用卡号码" 
                propertyName="account.creditCardNumber"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
                <number-validator> 
                    <message>${displayName} 必须是数字</message> 
                </number-validator> 
            </services:field> 
            <services:field name="creditCardType" displayName="信用卡类型" 
                propertyName="account.creditCardType"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="creditCardExpiryMonth" displayName="信用卡过期月份" 
                propertyName="account.creditCardExpiryMonth"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
            <services:field name="creditCardExpiryYear" displayName="信用卡过期年份" 
                propertyName="account.creditCardExpiryYear"> 
                <required-validator> 
                    <message>必须填写 ${displayName}</message> 
                </required-validator> 
            </services:field> 
        </services:group> 
    </services:form>

</beans:beans>

Webx之表单验证的更多相关文章

  1. jQuery学习之路(8)- 表单验证插件-Validation

    ▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 ...

  2. 玩转spring boot——AOP与表单验证

    AOP在大多数的情况下的应用场景是:日志和验证.至于AOP的理论知识我就不做赘述.而AOP的通知类型有好几种,今天的例子我只选一个有代表意义的“环绕通知”来演示. 一.AOP入门 修改“pom.xml ...

  3. form表单验证-Javascript

    Form表单验证: js基础考试内容,form表单验证,正则表达式,blur事件,自动获取数组,以及css布局样式,动态清除等.完整代码如下: <!DOCTYPE html PUBLIC &qu ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(33)-MVC 表单验证

    系列目录 注:本节阅读需要有MVC 自定义验证的基础,否则比较吃力 一直以来表单的验证都是不可或缺的,微软的东西还是做得比较人性化的,从webform到MVC,都做到了双向验证 单单的用js实现的前端 ...

  5. 实现跨浏览器html5表单验证

    div:nth-of-type(odd){ float: left; clear: left; } .origin-effect > div:nth-of-type(even){ float: ...

  6. jQuery Validate 表单验证 — 用户注册简单应用

    相信很多coder在表单验证这块都是自己写验证规则的,今天我们用jQuery Validate这款前端验证利器来写一个简单的应用. 可以先把我写的这个小demo运行试下,先睹为快.猛戳链接--> ...

  7. jquery validate表单验证插件-推荐

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...

  8. 表单验证插件之jquery.validate.js

    提到表单验证的插件,第一个想到的就是jquery.validate.js,所以小生想在这里稍微详细地说一下这款插件的具体使用方法,便于理解,我直接附上整段demo的代码(没怎么调样式,主要是看js): ...

  9. 走进AngularJs 表单及表单验证

    年底了越来越懒散,AngularJs的学习落了一段时间,博客最近也没更新.惭愧~前段时间有试了一下用yeoman构建Angular项目,感觉学的差不多了想做个项目练练手,谁知遇到了一系列问题.yeom ...

随机推荐

  1. hibernate篇章一

    我只想说一句话FUCK! 昨晚查了一晚上资料. 今早细致勃勃的准备搭建环境,早上到现在失败!失败!失败!蛋疼 有兴趣的可以试试.我暂时搁置,去做分页了 有兴趣需要相关资料的可以查阅我的微博java66 ...

  2. Unity3D 之UGUI 按钮

    新建一个按钮 按钮对应的属性 按钮下面只有一个文本的 游戏对象,是Button对应的显示文字 Interactable -->是否可以交互 Transition -->变换,对应各种关于按 ...

  3. 那天有个小孩跟我说LINQ(六)转载

    2  LINQ TO SQL完结(代码下载)      我们还是接着上次那个简单的销售的业务数据库为例子,打开上次那个例子linq_Ch5 2.1 当数据库中的表建立了主外键 ①根据主键获取子表信息 ...

  4. windows下能读写linux分区的软件 转

    1. ext2ifs 这个工具与explore2fs都是John Newbigin使用Delphi写的,explore2fs Copyright (C) 2000,Ext2IFS v0.3 Copyr ...

  5. 04_天气查询_JAX-WS方式_服务端

    [简述] WebService的Java实现共有三种方式:JAX-WS(JAX-RPC).JAXM&SAAJ.JAX-RS. JAX-WS: JAX-WS  的全称为 Java API for ...

  6. 用crontab、crond在嵌入式系统中添加定时任务

    在嵌入式系统中,定时任务通过crond和cronttab两个系统命令来联合执行. 其中crond是定时任务的守护进程,系统开始时是没有开启的.crontab主要作用是管理用户的crontab file ...

  7. 鼠标操作[OpenCV 笔记10]

    ) winname 窗口名字 onMouse 指定窗口每次鼠标事件发生的时候,被调用的函数指针.函数的原型应为void Foo(int event, int x, int y, int flags, ...

  8. SQL Server系统视图 [不定期更新]

    1.sys.objects:在数据库中创建的每个用户定义的架构作用域内的对象(如表.视图.约束.默认值.日志.规则存储过程等,但不包括DDL触发器)在该表中均对应一行. 列名 说明 name 对象名. ...

  9. js实现小数点后保留N位并可以四舍五入——js对float数据的处理

    曾经遇到的两次的问题,关于前台接受后台传过来的float数据,一显示就是老长的小数点后缀,很烦人,后来想着用js把其进行四舍五入处理下,经网上查找,一哥们的代码如下:(很好用,感谢下!) functi ...

  10. 织梦DedeCMS网站地图模板

    亲和百度蜘蛛,分页多层次特色,织梦系统最好用的网站地图! 用 DedeCMS(织梦) 系统搭建的网站多数都是以优化为主要目标的网站类型,既然是优化站 SEO 手段就离不开为网站设置网站地图.可是 De ...