在xwork-2.0.4.jar包中,请读者在\com\opensymphony\xwork2\validator\validators路径下找一个名字为“default.xml”的xml文件。在该文件中有所有Struts2自带的输入校验器定义。具体代码如下:
<!---------文件名:default.xml-------->
<validators>
<validator name="required"
class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring"
class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
<validator name="int"
class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
<validator name="double"
class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date"
class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
<validator name="expression"
class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression"
class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
<validator name="email"
class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
<validator name="url"
class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
<validator name="visitor"
class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
<validator name="conversion"
class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
<validator name="stringlength"
class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
<validator name="regex"
class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
</validators>
以上代码是所有Struts2输入校验器的定义,下面将这些输入校验器(一共有13个)的字段和非字段格式的校验形式写在如下,本例中没有程序代码示例,所有输入校验器的应用代码都是笔者自己定义的。当校验文件的取名为ActionClassName-validation.xml时,会对
action中的所有处理方法实施输入验证。如果你只需要对action中的某个action方法实施校验,那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action的名称。
<!-- 必填校验 -->
<!-- 非字段校验 -->
<validator type="required">
<param name="fidleName">field</param>
<message>请输入数据</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="required">
<message>请输入数据</message>
</field-validator>
</field>
<!-- 必填字符串校验 -->
<!-- 非字段校验 -->
<validator type="requiredstring">
<param name="fidleName">field</param>
<param name="trim">true</param>
<message>请输入数据</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>请输入数据</message>
</field-validator>
</field>
<!-- 整数校验 -->
<!-- 非字段校验 -->
<validator type="int">
<param name="fidleName">field</param>
<param name="min">1</param>
<param name="max">80</param>
<message>数字必须在${min}-${max}岁之间</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="int">
<param name="min">1</param>
<param name="max">80</param>
<message>数字必须在${min}-${max}岁之间</message>
</field-validator>
</field>
<!-- 浮点校验 -->
<!-- 非字段校验 -->
<validator type="double">
<param name="fidleName">field</param>
<param name="minExclusive">0.1</param>
<param name="maxExclusive">10.1</param>
<message>输入浮点无效</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="double">
<param name="minExclusive">0.1</param>
<param name="maxExclusive">10.1</param>
<message>输入浮点无效</message>
</field-validator>
</field>
<!-- 日期校验 -->
<!-- 非字段校验 -->
<validator type="date">
<param name="fidleName">field</param>
<param name="min">2009-01-01</param>
<param name="max">2019-01-01</param>
<message>日期无效</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="date">
<param name="min">2009-01-01</param>
<param name="max">2019-01-01</param>
<message>日期无效</message>
</field-validator>
</field>
<!-- 表达式校验 -->
<!-- 非字段校验 -->
<validator type="expression">
<param name="expression">password==repassword</param>
<message>两者输入不一致</message>
</validator>
<!-- 字段表达式校验 -->
<!-- 非字段校验 -->
<validator type="fieldexpression">
<param name="expression">password==repassword</param>
<message>两者输入不一致</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[#password==#repassword]]></param>
<message>两者输入不一致</message>
</field-validator>
</field>
<!-- 邮件校验 -->
<!-- 非字段校验 -->
<validator type="email">
<param name="fidleName">field</param>
<message>非法邮件地址</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="email">
<message>非法邮件地址</message>
</field-validator>
</field>
<!-- 网址校验 -->
<!-- 非字段校验 -->
<validator type="url">
<param name="fidleName">field</param>
<message>无效网址</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="url">
<message>无效网址</message>
</field-validator>
</field>
<!-- visitor校验 -->
<!-- 非字段校验 -->
<validator type="visitor">
<param name="fidleName">field</param>
<param name="context">fieldContext</param>
<param name="appendPrefix">true</param>
<message>输入校验</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="visitor">
<param name="context">fieldContext</param>
<param name="appendPrefix">true</param>
<message>输入校验</message>
</field-validator>
</field>
<!-- 类型转换校验 -->
<!-- 非字段校验 -->
<validator type="conversion">
<param name="fidleName">field</param>
<message>类型转换错误</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="conversion">
<message>类型转换错误</message>
</field-validator>
</field>
<!-- 字符串长度校验 -->
<!-- 非字段校验 -->
<validator type="stringlength">
<param name="fidleName">field</param>
<param name="minLength">1</param>
<param name="maxLength">10</param>
<param name="trim">true</param>
<message>字符串长度必须为10位</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="stringlength">
<param name="minLength">1</param>
<param name="maxLength">10</param>
<param name="trim">true</param>
<message>字符串长度必须为10位</message>
</field-validator>
</field>
<!-- 正则表达式校验 -->
<!-- 非字段校验 -->
<validator type="regex">
<param name="fidleName">field</param>
<param name="expression"><![CDATA[(/^13[13567890](\d{8})$/)]]></param>
<message>手机号码必须为数字并且是11位</message>
</validator>
<!-- 字段校验 -->
<field name="field">
<field-validator type="regex">
<param name="expression"><![CDATA[(/^13[13567890](\d{8})$/)]]></param>
<message>手机号码必须为数字并且是11位</message>
</field-validator>
</field>
代码解释
(1)必填校验器required是用来判断输入的字段是否为空。如果未输入任何数据则会显示错误信息。fieldName属性是指定校验的字段名。这个属性是所有Struts2自带的输入校验器都具有的属性。因此介绍其他输入校验器时,笔者略过不谈。但是读者自己要知道该属性是输入校验器共有的。该校验器其他标签都和前几章节中有过介绍,笔者也略过不谈。
(2)必填字符串校验器requiredstring用来判断输入字段是否是1个非空字符串。如果不是也显示错误信息。其中的trim属性是在校验之前对字符串进行处理。默认是“true”。
(3)整数校验器int判断输入的字段数据是在一个整数范围内。min属性是最小值,max是最大值。<message>标签内可用“${属性名}”格式类表示他们具体的值。
(4)浮点校验器double是t判断输入的字段数据是在1个浮点数范围内。minInclusive表示这个范围的最小值。max
Inclusive表示这个范围的最大值。还有minExclusive和maxExclusive两个属性,前者表明在浮点范围之外的最小值,后者是在浮点范围之外的最大值。
注意:以上四个属性如果没有声明,则输入校验不会去检查。
(5)日期校验器date判断输入的字段的日期值是否在1个日期范围内。min是该范围的最小值,max是最大值。他们两个属性也和浮点校验器的四个属性相同,如果没有声明则输入校验不检查。
(6)表达式校验器expression只有非字段校验格式。不能在字段校验中声明。它的属性也是expression。如代码所示开发者可以使用OGNL表达式来定义校验规则。
(7)字段表达式校验器fieldexpression判断字段是否满足一个表达式。如代码所示,当用来判断输入的密码和确认密码值是否一致就可以使用该校验器。它的属性expression和表达式校验器相同。不过它可以用在字段校验中。
(8)邮件校验器email来判断输入的字段是1个email时候是否符合email的格式。
(9)网址校验器ur
l来判断输入的字段是1个网址时候是否符合网址的格式。
(10)visitor校验器就是判断集合类型的字段。前面章节有所介绍。这里在重申一下context属性是可以应用的集合类型中元素对象的别名。appendPrefix属性是指定在错误信息中前面是否加上特定前缀。该前缀内容可在<message>标签中定义。另外这两个属性也是没有声明时候,校验器不会去执行检查。
(11)类型转换校验器conversion用来判断输入字段是否进行类型转换。它有1个repopulateField属性,如果为“true”表明如果发生类型转换错误,返回到struts.xml中指定的Action的input视图界面时候还是否把原来错误的输入内容显示出来。“false”则相反。从这也可以看出笔者一直坚持的观点类型转换也属于输入校验的一种是有理论依据的。
(12)字符串长度校验器stringlength用于判断输入的字符串长度是否是指定的长度范围。其中minLength是最小字符串长度,maxLength是最大字符串长度。trim属性和上述必填字符串校验器requiredstring中trim属性拥有相同功能。这三者也是属于不声明则不执行检查的可选属性。
(13)正则表达式校验器regex检查字段输入值是否和1个正则表达式匹配。expression属性中内容就是该正则表达式。还有个caseSensitive属性,为“true”则表明匹配时候对字母大小写敏感。反之则不敏感。如代码所示笔者用了1个判断输入的值是否是11位,全部由数字组成的正则表达式。对于输入手机号码数据的字段,该校验规则是最适用的。
分享到:
相关推荐
5. **Interceptor(拦截器)**:拦截器是Struts2的一大特色,它们按照预定义的顺序在Action执行前后进行处理,实现了如日志记录、权限验证、数据校验等通用功能,增强了代码的可复用性和模块化。 6. **插件体系**:...
默认提供了一些内置拦截器,如params预处理请求参数,validation进行数据校验。 4. **结果类型(Result)**:负责将Action执行的结果转发到指定的视图,如JSP、FreeMarker模板等。 5. **模型驱动(ModelDriven)和...
通过阅读这些文档,开发者能够掌握如何创建Action、配置Struts2、使用拦截器、处理表单提交、进行数据校验、实现动态方法调用等技术。此外,文档还会详细介绍如何利用Struts2的特性来优化性能,提高应用的安全性和可...
在Java社区中,Struts2因其丰富的特性、灵活的配置以及对拦截器的支持而受到广泛的欢迎。`Struts2-api`压缩包通常包含了Struts2框架的官方文档,这对于开发者来说是极其宝贵的资源,因为它提供了详细的API参考和使用...
3. **拦截器(Interceptors)**:这是Struts 2的一大特色,它可以插入到Action调用的前后,实现如日志记录、权限验证、数据校验等通用功能。例如,`TilesPlugin`用于页面布局,`ValidationInterceptor`进行表单验证...
4. **拦截器(Interceptor)**:Struts 2使用拦截器来增强Action的处理能力,拦截器可以实现如日志记录、权限验证、数据校验等通用功能,它们按照预设的顺序执行。 5. **OGNL(Object-Graph Navigation Language)*...
2. **拦截器**:Struts2的核心特性之一是拦截器,它们允许在Action调用前后插入自定义逻辑,比如日志记录、权限检查、数据校验等。拦截器链使得代码组织更加模块化,提高了代码的可复用性和可扩展性。 3. **配置...
6. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认的表达式语言,它允许在Action和视图之间方便地访问和操作对象属性。 7. **国际化(i18n)**:Struts2支持多语言环境,开发者可以通过...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、高效且易于维护的Web应用。这个"struts-2.5.16-min-lib"压缩包包含了Struts2框架的基本jar包,这些库是开发基于Struts2的应用程序所必需的核心组件...
如果默认的校验器不能满足需求,Struts2还允许开发者创建自定义的校验器。这需要实现`Validator`接口并配置在`struts.xml`中。 5. **结果处理**: 校验失败后,Struts2会根据配置的`action`标签中的`input`属性值...
可以使用Struts2提供的拦截器(interceptors)来拦截并处理这些输入,或者配置全局的默认拒绝策略,阻止所有未明确允许的OGNL表达式。 此外,还可以启用Struts2的安全插件,如XWork或StrutsPrepareAndExecuteFilter...
在Struts2中,输入校验是确保用户提交的数据符合预设规范的重要环节,可以防止非法数据进入系统,保护数据的完整性和安全性。本文将详细探讨Struts2中的输入校验机制。 首先,Struts2提供了两种主要的校验方式:...
"struts2校验器_xml格式"指的是使用XML文件进行Struts2中的表单验证配置。 XML格式的验证器在Struts2中提供了灵活和可扩展的方式来定义验证规则。这些规则定义了用户在表单中输入的数据应该如何被检查,以确保它们...
3. **拦截器(Interceptors)**:拦截器是Struts2的重要特性,允许在Action执行前后插入自定义逻辑,如日志、权限验证、数据校验等。 4. **模型驱动(ModelDriven)**:这是一个Action接口,使用它可以将模型对象...
3. **拦截器(Interceptor)**:这是Struts 2的一大创新,它们是在动作执行前后插入的代码片段,可以实现如日志、权限验证、数据校验等通用功能。 4. **插件架构**:Struts 2支持丰富的插件,如Struts2-convention-...
3. **Validation.xml**:这是Struts2的默认验证配置文件,用于定义更复杂的验证规则,或者为不支持注解的旧版本Struts2提供验证。 4. **Field Error**:当验证失败时,Struts2会将错误信息存储在ActionContext中,...
在开发过程中,可以利用Struts提供的插件系统来扩展功能,如 strut2-convention-plugin 插件,它提供了一种约定优于配置的开发方式,简化了Action类的映射。还有 strut2-dojo-plugin 和 strut2-jquery-plugin 等,...
3. **Interceptor(拦截器)**:拦截器是Struts2的重要特性,它在Action执行前后插入代码,实现了如日志、权限检查、数据校验等常见功能。例如,`ParamsInterceptor`用于参数绑定,`ValidationInterceptor`进行表单...
- Struts2的拦截器是其一大特色,它们允许在Action执行前后插入自定义逻辑,如日志记录、权限验证、数据校验等。用户可以自由组合拦截器栈,以实现不同的业务需求。 4. **结果类型(Result Types)** - 结果类型...
在处理用户输入和业务逻辑交互时,Struts2提供了强大的类型转换和校验机制,以确保数据的有效性和安全性。以下是对给定内容的详细解释: **类型转换** 在Struts2中,当用户通过表单提交数据时,所有参数默认都以...