`
liyixing1
  • 浏览: 961564 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

验证框架

阅读更多
重写validate方法,页面中使用了ww:form标签,已经提供了输出校验错误和显示错误的能力了。
使用配置文件方式,命名方式ActionName-validation.xml其中actionname就是action的类字(注意是类名不是action名字)。和action的源文件位于同一个包下。如:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
    <field name="hello">
//requiredstring类型的校验表示该字段是必须输入的。
        <field-validator type="requiredstring">
            <message>You must enter a name</message>
        </field-validator>
    </field>
</validators>

页面刻意通过<s:fielderror/>来输出错误。

重写validateXxx方法
一个action可以多个方法,重写validae方法无法应付多个方法的情况。我们的做法如下
如果有一个register方法,重写validateRegister方法。
然后是定义个action,这个action指定了method方法是register,那么访问这个register的action会调用validateRegister方法。

校验的完整流程是:
1.类转换器进行转换成action的属性
2.转换器出现一场,错误信息保存到ActionContext中。conversionError封装到fieldError
3.通过反射调用validateXXX
4.调用action的validate
5.如果没有fieldError(前面都执行了,才会检查),那么就是action会执行。

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
    <field name="hello">
//requiredstring类型的校验表示该字段是必须输入的。
        <field-validator type="requiredstring">
            <message>You must enter a name</message>
        </field-validator>

//这里对name进行的两个验证。
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
            <message>名字无效</message>
        </field-validator>
    </field>
</validators>

国际化
<message>元素的key属性,指定国际化提示信息对应的key、
获取局部国际化的text。

客户端的校验
<s:form的validate=true的话会进行客户端校验。
如果直接访问这样的页面,会报错。
是校验配置文件中的message元素的key引起的,它加载的是全局的国际资源文件,而全局的并未定义这个key。
刻意使用${getText("消息key")}如
<message>${getText("name.requried")}</message>
由于javascript的限制,无法全部将服务端的验证转换成客户段,客户端只支持:
required必填验证
requiredstring 必填的字符串
stringlength 字符串长度校验
regex表达式校验
email
url
int
double
另外不要将<s:form>的theme设置simple
不要在校验文件中使用key来指定国际化

一个action类中对应的多个方法
<ActionClassName>-<ActionAliasName>-validation.xml

RegistionAction-login-validation.xml
ActionAliasName标示的是action name,而不是方法名,这个可以从源码当中看出来。在源码中可以看到初始化验证器的代码:
buildClassValidatorConfigs(anInterface1, checkFile)
buildAliasValidatorConfigs(anInterface1, context, checkFile)
第二个方法buildAliasValidatorConfigs(anInterface1, context, checkFile)就是根据标识生成对应的验证器。
而这里的参数context,从调试中可以看出来是action名字而不是方法名。
String fileName = aClass.getName().replace('.', '/') + "-" + context + VALIDATION_CONFIG_SUFFIX;

return loadFile(fileName, aClass, checkFile);
其方法里面代码只有两句
fileName是action类名+context。
系统收索ActionName-validation.xml,搜索到与否都不会停止
搜索ActionName-login-validation.xml


短路
<validator元素和field-validator都有一个short-circuit属性,true为短路,默认false
如果一个字段指定了两个校验,那么这个字段有一个校验有效就放弃该字段下面的校验。如果加入了短路,那么执行顺序要注意
非字段风格
( <validator type="requiredstring">
<param name="fieldName>要验证的字段</param>
            <message>You must enter a name</message>
        </validator>直接写validator,然后<param name="fieldName>要验证的字段</param>设置字段

的校验器优先字段风格校验器
(<field name="hello">
//requiredstring类型的校验表示该字段是必须输入的。
        <field-validator type="requiredstring">
            <message>You must enter a name</message>
        </field-validator>
    </field>,先有field,然后是field-validator

同类型,按先后顺序,从上到下。

注册校验器
在xwork的jar文件中
在com.opensymphony.xwork2.validator.validators的一个default.xml框架提供的校验器
<validators>
<validator name="xxx" class="校验器类" />
自己添加校验器需要添加一个validators.xml到classes文件目录下。另外如果有这个文件,default.xml的不会加载,自己定义的话记得把default.xml的复制进来。

复合属性的校验,visitor
如有一个User类型的user属性,
<field name="user">
//requiredstring类型的校验表示该字段是必须输入的。
        <field-validator type="visitor">
            <param name="context">userContext</param>
<param name="appendPrefix">true</param>
        </field-validator>
    </field>
这里不设置校验规则,User类有一个对应的校验文件
User-validation.xml,由于我们上面设置了context属性,所以该文件的名字应该是
User-userContext-validation.xml,该文件和action的校验一样。
分享到:
评论

相关推荐

    一个既简单的校验框架

    本篇将深入探讨一个基于Java的简单校验框架的实现,该框架充分利用了注解和反射技术,旨在提供一种优雅且可扩展的解决方案。 首先,我们来理解注解(Annotation)在Java中的作用。注解是一种元数据,它提供了在源...

    Struts2自定义校验框架

    下面将详细介绍Struts2自定义校验框架的相关知识点。 1. **Struts2验证框架概述** Struts2的验证框架主要负责处理用户提交的数据,进行验证,并在验证失败时显示错误消息。它支持两种验证方式:基于注解的验证...

    jsvalidation 强大而灵活的表单客户端验证框架

    JSValidation是强大灵活的客户端验证框架。在应用服务器或者开发框架不提供验证的情况下,例如,普通的JSP, ASP, PHP等开发,以及一些不提供验证支持的开发框架,如Tapestry, Velocity等,JSValidation提供了一种...

    Struts2校验框架应用

    Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...

    各种输入框动态校验框架

    "各种输入框动态校验框架"这个标题揭示了我们讨论的主题是关于不同类型的输入验证解决方案,它们可以提供实时反馈,帮助用户在输入时即时修正错误,提升用户体验。 描述中的“输入内容自动提示”意味着框架具备智能...

    数据校验框架在hybris中的使用

    本文将详细介绍如何在Hybris中利用数据校验框架进行有效的数据验证。 1. 背景 在传统的开发方式中,数据校验通常通过编写if语句来实现,这不仅增加了代码量,而且难以维护。在接口开发中,针对各种请求数据的格式...

    强大的表单验证框架

    "强大的表单验证框架"标题所指的,很可能是用于简化这一过程的高效工具,旨在帮助开发者更方便、更有效地进行表单数据验证。 表单验证框架通常包含以下核心功能: 1. **规则定义**:提供丰富的验证规则,如非空、...

    很不错的验证框架jquery

    在实际开发中,除了jQuery Validation Plugin,还有其他类似的选择,例如React、Vue或Angular等现代前端框架自带的验证库,它们提供了更加原生和组件化的验证方式,如Formik(React)、Vee-Validate(Vue)和ng-...

    jQuery好的验证框架

    **jQuery验证框架** jQuery是一个广泛使用的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画和Ajax交互。在Web开发中,数据验证是必不可少的一环,用于确保用户输入的有效性和安全性。jQuery验证框架...

    struts2.0的数据校验框架struts2.0的数据校验框架

    struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架

    struts2校验框架使用心得.txt

    其中,Struts2提供的校验框架是其核心特性之一,能够有效地进行表单验证,并且支持多种验证方式。 #### 二、配置Struts2框架 为了使用Struts2框架,首先需要在项目的`web.xml`文件中配置过滤器。下面的示例展示了...

    Hibernate Validator校验框架

    综上所述,Hibernate Validator 是一个强大的校验框架,它为 Java 应用提供了标准化的数据验证方案,简化了验证逻辑的实现,提高了代码的可维护性和一致性。通过与 Spring 等框架的整合,可以轻松地在 Web 开发中...

    Struts验证框架配置详解

    Struts验证框架是Java Web开发中的一个重要组成部分,它主要用于确保用户输入的数据符合应用程序设定的规则,从而提高数据的准确性和安全性。本篇文章将深入探讨Struts验证框架的配置过程,帮助开发者更好地理解和...

    jquery 前端验证框架

    **jQuery前端验证框架详解** 在Web开发中,前端验证是必不可少的一个环节,它能有效防止无效数据提交到服务器,提高用户体验并减轻服务器负担。jQuery,作为一款广泛使用的JavaScript库,提供了许多工具和插件来...

    .net winform 数据验证框架

    《.NET WinForm数据验证框架详解》 在.NET框架中,Windows Forms(WinForm)是开发桌面应用程序的常用工具,而数据验证则是确保用户输入准确无误的关键环节。本篇文章将深入探讨一个基于C#的.NET WinForm数据验证...

    JSP客户端表单验证框架JSValidation

    **JSP客户端表单验证框架JSValidation** JSValidation是一款基于JavaScript的轻量级表单验证框架,主要用于在JSP(JavaServer Pages)应用中实现客户端的表单数据验证。它提供了一种简单、高效的手段来确保用户在...

    struts1验证框架相当好的经典例子

    在Struts1中,验证框架是处理用户输入数据校验的重要组成部分,它帮助开发者确保用户提交的数据符合预定义的规则,从而提高应用程序的安全性和用户体验。下面将详细介绍Struts1验证框架的使用。 首先,我们来看一下...

    stuts验证框架与国际化

    Struts验证框架是Struts的一部分,它为开发者提供了处理用户输入验证的强大工具,帮助确保从客户端接收到的数据是合法且符合业务规则的。在Web开发中,验证是非常关键的一环,因为无效或恶意的数据可能会导致各种...

Global site tag (gtag.js) - Google Analytics