您的位置:首页 > 编程语言 > Java开发

Struts2.0学习笔记 — 输入校验(Validation)

2009-07-31 13:15 288 查看
一、输入校验:register.jsp、register2.jsp、register3.jsp

输入校验建立在类型转换的基础之上,即先进行类型转换之后,再进行输入校验。

遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,

并且将该错误信息放到addFieldError里面。但也可以自定义显示的错误信息:

全局定义:

在struts.xml文件<struts>下引入国际化配置文件:

<constant name="struts.custom.i18n.resources" value="message">

</constant>

注:name的值是固定的,"struts.custom.i18n.resources"

value的值可随意起,

并在src根目录(即calss根目录下)建message.properties,文件内容:

xwork.default.invalid.fieldvalue={0} error!!!!

局部定义:

对哪个Action类进行的类型转化错误,则应把该文件跟此Action类放在同一个包内,且二者的名

称要一致。

假如,RegisterAction类的age(int型)属性类型转化错误(给age一个abc的字符串,则进

行类型转化时出错),那么,此文件名应为:RegisterAction.properties,,,其内容为:

invalid.fieldvalue.age= Age conversion error!!

类型转换与输入校验的流程:

1. 首先Struts2对客户端传来的数据进行类型转换

2. 类型转换完毕后再进行输入校验

3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)

注意:如果类型转换不成功,也同样要进行输入校验

当把一个struts2标签的主键的theme设置成theme="simple"的时候,表示该主键不再会有一个struts

给它的错误提示。且不在进行排版,需要设计者自己排版,该主键的label属性不再起作用

在struts.xml配置文件里可以通过method="method"自定义Action类里的主方法public String method(),

且此时该Action类中的校验方法为public void validateMethod()。如果此Action类中存在validate()方法,

则在校验时,先调用validate()方法,然后再调研自定义的校验方法validateMethod()。

二、校验框架:register4.jsp

任何一个Action类均可用xml校验框架来进行参数属性值的校验。xml文件与Action类文件在同一包下,且xml文件

的命名格式跟Action类名有狠大的关系:比如某Action类的名称为RegisterAction4。

如果一个JSP页面在该RegisterAction4类中的主方法是ececute(),则对该JSP页面的校验框架名称为RegisterAction4-validation.xml,

即是:类名-validation.xml(Action类全局校验框架)。

如果该JSP页面在RegisterAction4类中对应的主方法不是execute(),而是test()方法(通过<action>的method属性,

使method="test"得到),则对于该JSP页面属性的校验框架名称应为:RegisterAction4-test-validation.xml,

即:类名-主方法名-validation.xml(Action局部校验框架)。

DeviceCategoryAction-deviceCategoryAddNext-validation.xml

如果同时提供RegisterAction4-validation.xml和RegisterAction4-test-validation.xml两个校验框架的话,

即使JSP页面对应RegisterAction4的主方法是test(),那么也要先进行RegisterAction4-validation.xml的校验,

再进行RegisterAction4-test-validation.xml

的校验。

xml文件的内容可为:

<?xml version="1.0" encoding="UTF-8"?>

<!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="username"><!-- 校验一个属性 -->

<!-- field-validator:表示对该属性的一次校验,其方式为type:此处为必须要填的校验。 type的值

在com.opensymphony.xwork2.validator.validators包下的default.xml文件下可查询到

每一个type都对应一个class,从中可以查看该type对应的类情况

-->

<field-validator type="requiredstring">

<!--param属性可以出现0到多次。

trim是校验方式type的值所对应的类的一个set方法的参数名称。true,表示赋给trim的值为true -->

<param name="trim">true</param>

<!-- 表示一旦用户信息不符合整个校验规则的话输出的提示信息 -->

<message>用户名不能为空!!</message>

</field-validator>

<field-validator type="stringlength">

<param name="minLength">6</param>

<param name="maxLength">10</param>

<message>用户名必须在 ${minLength} 和 ${macLength} 之间</message>

</field-validator>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: