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

struts2视频学习记录第8 9讲

2009-03-14 01:16 351 查看
第8讲.Struts2的校验框架
配置文件名:ActionName-validation.xml
看它的定义
<?xml version="1.0" encoding="UTF-8"?>

<!--
XWork Validators DTD.
Used the following DOCTYPE.

<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
-->
<!ELEMENT validators (field|validator)+>
<!ELEMENT field (field-validator+)>
<!ATTLIST field
name CDATA #REQUIRED
>
<!ELEMENT field-validator (param*, message)>
<!ATTLIST field-validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT validator (param*, message)>
<!ATTLIST validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST param
name CDATA #REQUIRED
>
<!ELEMENT message (#PCDATA)>
<!ATTLIST message
key CDATA #IMPLIED
>
知道有两个节点</validator>和</field>必须有一个,每一个的param可以有多个message是必须的

例如对password进行验证:
<field name="password">
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="minLength">6</param>
<param name="maxLength">16</param>
<message>密码长度必须在${minLength}和${maxLength}之间</message>
</field-validator>
</field>
一个字段里可写多个<field-validator type=""> </field-validator>
对多个字段进行验证要写多个
<field name="">
<field-validator type=""> </field-validator>
</field>
其中的用法可参考:type即是下面的name要设置他们属性可参考源代码
com.opensymphony.xwork2.validator.validators下的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>

name="required"(为非字符型时用 int date等) 和name="requiredstring"(针对字符),否则可能不出效果
还要注意于类型转换的错误。自己的验证的错误信息。不要重复提示做到界面友好

这一讲主要讲了验证类型是否正确,输入类型是否符合,比较简单。

第九讲:子类继承父类后,验证的时候先调用父类的局部的验证,再全局的,然后调子类的局部,子类的全局

对某个方法验证:

先 PointAction-test-validation.xml

后 PointAction-validation.xml

<validator type="requiredstring">
<param name="fieldName">username</param>
<message>用户名错误!</message>
</validator>
<validator type="requiredstring">
<param name="fieldName">password</param>
<message>密码错误!</message>
</validator>

和filed是一样的,只是顺序不同fieldName是固定的
short-circuit是短路设置,以为,此字段验证错误,即停止下面的验证(对同一个字段)
<field name="birthday" >
<field-validator type="required" short-circuit="true">
<message>birthday不能为空!</message>
</field-validator>
<field-validator type="date">
<param name="min">1970-01-01</param>
<param name="max">2000-01-01</param>
<message>birthday必须在${min}和${max}之间</message>
</field-validator>
</field>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: