`
happmaoo
  • 浏览: 4507511 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

人性化的验证(Validate)系统

阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

为何要验证(Validate)
  验证是系统中一个必不可少的部分,前端验证、后台验证中起来往往会发现,一个简单完整的CRUD应用中,用来处理与验证有关的代码或配置就占了几乎三分之一。Struts1.x时代的验证就不提了。不管是Struts2(webwork)的验证还是JSF里面提供的验证,都是采用按步就班的方式,一笔一划的写出来,仍然没有达到能使验证工作变得简单、灵活。

如何验证
  EasyJWeb完善了验证系统,使验证变得更加容易,灵活控制。你可以使用非常简单的标签或配置就能使系统拥有服务器端及客户端验证的功能。
  这里使用一个简单的示例来介绍。有一个Person模型,如下所示:
  包含id、name、sex、borndate、height、mail、homepage等几个属性。

  假如我们要让name、sex、heigth、borndate必填,并且borndate必须在1908到2008年之间, mail属性只接收正确的email信息,homepage必须接收url信息。则我们只需要在Domain对象(可以是Entity对象,也可以是传输Command对象)中加入下面的配置信息即可:

@FormPO(name="person",validators=...{@Validator(name="required",field="name,sex,heigth,borndate"),@Validator(name="range",field="borndate",value="min:1908-01-01;max:2008-01-01"),@Validator(name="email",field="mail"),@Validator(name="url",field="homepage")})
publicclassPerson...{
privateLongid;
privateStringname;
privateStringsex;
privateStringmail;
privateIntegerheigth;
privateDateborndate;
publicStringhomepage;
//setter及getter方法
}



不需要进行复杂的配置,只需要使用符合人类语言习惯的简单标注,就能实现所需要的验证业务逻辑。
  @Validator验证标签的使用非常灵活,你只要具有充分的想像力,就能描述出符合特定需要的验证逻辑。比如上面的例子中,我们规定name不允许为空,字符数最小不能少于5个,最大不能超过10个,在进行字符验证前需要清除掉前后的空格。则我们可以使用下面的验证标签:
  

@Validator(name=”string”,value=”blank;trim;required;min:5;max:10;minMsg:最少不能少于5个字符;maxMsg:最大不能超过10字符”)
  
privateStringname;

错误信息的显示
在表示层的页面模板中,我们可以使用下面的模板标签来显示验证错误信息,
$!errors-显示全部验证错误信息。
$!errors.name-显示name属性(字段)的错误信息。
如下面的的Form

formname="person_new_form"id="person_new_form"method="post"action="/ejf/person/create">
请输入姓名:
inputname="name"type="text"id="person_name"value="$!name"/>$!errors.name
电子邮箱:
inputname="mail"type="text"id="person_mail"value="$!mail"/>$!errors.mail

3、统一的验证标签@Validator

public@interfaceValidator...{
publicStringname();//验证器的名称,如required,string,range等
publicStringvalue()default"";//验证器的值,使用;号作为分隔符存放各个参数。如value="required;min:5;max:20"
publicStringmsg()default"";//默认错误提示信息,当验证无法通过时显示的提示信息
publicStringfield()default"";//字段名称,对于property及field类型的校验均可用,也是错误对象的主属性名称。可以用于多个字段,此时需要使用,隔开
publicStringdisplayName()default"";//定义对象的显示名称,默认情况下为field的名称,可以通过@Field中的name属性定义。
publicValidateTypetype()defaultValidateType.Property;//校验类型,默认是对属性进行校验
publicbooleanrequired()defaultfalse;//是否必填字段,每个验证器都可以通过设置属性required=true来指定该属性为必填项
publicStringkey()default"";//多国语言显示值的编码
}

4、EasyJWeb内置的Validator验证器
  Validators.RequiredValidator-用来定义必填属性,预定义名称required。
  Validators.StringValidator-字符串验证器,定义字符串的属性,预定义名称string。
  Validators.URLValidator-URL字符串验证器,匹配一个合法的URL,预定义名称url。
  Validators.RegexpValidator-正则表达式验证器,匹配指定条件的正则表达式,预定义名称regex。
  Validators.EmailValidator-Email字符验证器,匹配正确的email字符串,预定义名称email。
  Validators.RangeValidator-范围验证器,用来限制属性必须在指定的范围之内,预定义名称range。

  验证器引擎的触发也是非常灵活的,如果是普通的CRUD应用或者是基于普通CRUD应用基础上扩展的应用,则在基本的添删改查中会自动调用验证逻辑。
  如果是自定义的Action,可通过调用form.toPo等方法触法验证逻辑。如果是使用IDAO接口进行的调用,则在进行数据持久化之前会调用验证逻辑。

5、自定义验证器
  除了几个内置的验证器以外,EasyJWeb支持用户自定义的验证器。用户自定义的的验证器只需要实现Validator接口,即可注册到系统中使用。Validator的内容如下:

publicinterfaceValidator...{
/***//**
*执行具体的验证操作
*
*
@paramobj
*验证目标对象
*
@paramvalue
*验证值
*
@paramerrors
*验证异常信息封装
*/

voidvalidate(TargetObjectobj,Objectvalue,Errorserrors);
/***//**
*验证器默认错误信息
*
*
@return返回验证器默认的错误提示信息
*/

StringgetDefaultMessage();
}

  在实际应用中,一般通过使用继承抽象类AbstractValidator来实现自定义的验证器。如下面是最简单验证器Required的实现:

publicclassRequiredValidatorextendsAbstractValidator...{
publicRequiredValidator()...{

}

publicvoidvalidate(TargetObjectobj,Objectvalue,Errorserrors)...{
if(value==null)
addError(obj,value,errors);
elseif(valueinstanceofString)...{
}

}

publicStringgetDefaultMessage()...{
return"{%0}不能为空!";
}

}




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1753822


分享到:
评论

相关推荐

    jQuery validate框架的个性化验证

    在 HTML 页面中,通过 `$(document).ready()` 函数来初始化验证器,并调用 `.validate()` 方法应用到目标表单上。例如: ```html &lt;script src="https://code.jquery.com/jquery.js"&gt;&lt;/script&gt; ...

    validate验证

    在IT行业中,`validate验证`是一个非常重要的环节,...结合中文包和增强的远程验证功能,可以创建更加人性化和安全的用户交互体验。在实际操作中,需要熟悉插件的API,理解其工作原理,并根据项目需求进行定制和扩展。

    jQuery表单验证插件validate支持拓展.zip

    3. **错误消息定制**:使用`messages()`方法可以自定义错误提示信息,让提示更加人性化。 4. **显示与隐藏错误信息**:validate插件能自动管理错误信息的显示和隐藏,保持表单的整洁。 5. **提交表单控制**:通过`...

    基于jquery的表单验证,超越jquery.validate插件

    本教程将深入探讨一个基于jQuery的表单验证解决方案,它在性能、易用性、功能和人性化方面超越了官方的`jquery.validate`插件。 首先,我们要了解`jquery.validate`插件。它是jQuery生态系统中最广泛使用的表单验证...

    Jquery Validate修改版

    《jQuery Validate修改版:提升表单验证体验》 在网页开发中,用户输入的验证是不可或缺的一环,它能够确保用户提交...通过深入理解和灵活运用,开发者可以进一步优化自己的表单验证流程,打造出更加人性化的Web应用。

    表单验证 jquery.validate.js与poshytip集成

    在IT行业中,表单验证是Web开发中的一个关键环节,它确保用户输入的数据符合...validate.js负责处理验证逻辑,Poshytip则提供了视觉上吸引人的提示,两者相得益彰,为Web应用程序的表单交互注入了更多专业感和人性化。

    jquery-validate 表单较验

    1. 初始化验证:在表单元素上添加 `id`,然后在文档加载完成后调用 `validate()` 方法初始化验证: ```javascript $("#myForm").validate(); ``` 2. 验证规则:通过 `rules` 属性为表单元素指定验证规则。例如,...

    利用jQuery.Validate异步验证用户名是否存在(推荐)

    jQuery.Validate插件提供了一个更为人性化的解决方案,它允许开发者实现异步验证,也就是说,可以在不离开当前页面的情况下,实时地检查用户名是否被占用。异步验证是通过AJAX(Asynchronous JavaScript and XML)...

    jquery.validate.min.zip

    2. **初始化验证**:在文档加载完成后,使用`.validate()`方法初始化验证,例如: ```javascript $(document).ready(function() { $('#myForm').validate(); }); ``` 其中,`#myForm`是需要验证的表单ID。 3....

    js验证“身份证”“信用卡”“邮编”等

    它的核心功能包括基本的必填项检查、数据类型验证(如数字、电子邮件等),并支持自定义规则和消息,使得表单验证更加灵活和人性化。 1. **身份证验证**: 在中国,身份证验证通常涉及15位或18位的身份证号码,需...

    jQuery表单校验插件validate实例代码集展现了插件的各种用法.zip

    在本文中,我们将深入探讨...在实践中,记得结合实际项目需求,灵活运用这些知识,以实现更加高效和人性化的表单验证功能。同时,不要忘记持续学习和关注jQuery validate插件的更新,以便及时获取最新的特性和优化。

    jquery-validate

    `jQuery Validate`是一个非常流行的JavaScript库,用于对HTML表单进行验证。它是jQuery生态的一部分,提供了丰富的...在实际开发中,根据项目特点调整验证策略,结合自定义规则和消息,可以使验证更加人性化和精确。

    好用的bootstrapvalidator表单验证

    这个插件通过优雅的UI设计和灵活的配置选项,使得表单验证更加人性化,提高了用户体验。 BootstrapValidator的核心功能在于它的验证规则和自定义验证方法。预设的验证规则涵盖了基本的输入检查,如非空、邮箱、手机...

    js 表单验证网页特效

    JavaScript(简称JS)是网页开发中不可或缺的一部分,尤其在表单验证方面,它扮演着至关重要的角色。在网页设计中,表单验证是确保用户输入...通过不断学习和实践,开发者可以创建出更加智能和人性化的表单验证效果。

    jquery验证包

    5. 自定义错误消息,使其更具人性化。 总结,jQuery验证包提供了高效、灵活的客户端验证机制,配合无侵入式Ajax插件,能够构建出响应迅速、交互流畅的Web应用。理解并熟练掌握这些工具,无疑会提升开发效率,提高...

    jQuery Validate 验证,校验规则写在控件中的具体实例

    通过这种方式,可以使得校验错误的反馈更加友好和人性化,提升用户体验。 #### 知识点七:页面加载完毕后触发验证 在页面加载完成后,我们通常会使用`$().ready()`方法来触发jQuery Validate插件的验证逻辑,代码...

    jQuery Validate表单验证入门学习

    通过这种方式,可以更好地满足本地化的需求,使得表单验证更加人性化。 在使用jQuery Validate时,可以通过data-属性的方式为不同的表单元素添加校验规则,也可以通过编程的方式在JS代码中设置规则。无论是哪种方式...

    LiveValidation超好用的表单验证框架(包含中文帮助)

    LiveValidation允许自定义错误消息,使其更具人性化。 4. **事件监听**:LiveValidation提供了多种事件,如`beforeValidate` 和 `afterValidate`,可以在验证前后执行额外的逻辑。 5. **性能优化**:虽然实时验证...

    jQuery formValidator表单验证插件

    2. **初始化插件**:通过`$.validate()`方法初始化验证,通常放在文档加载完成后执行。 3. **配置规则**:使用`rules`参数定义表单字段的验证规则,如`$("#inputID").rule("add", { rule: "required" })`。 4. **...

Global site tag (gtag.js) - Google Analytics