验证框架的使用

如何使用验证框架!

1、定义一个xml文件,位置和需要执行校验的类位置一致,名称定义规则为

              类名称-validation.xml   类似于validate方法

              类名称-请求地址-validation.xml  类似于validateAdd方法

             

              例如:目前需要针对UserAction进行服务器端数据校验,则xml文件和UserAction类文件的位置相同

              这里是针对 add方法的校验,则xml文件名称为UserAction-user_add-validation.xml

             

2、给xml文件引入dtd说明,可以参照struts2-core.jar中/xwork-validator-1.0.3.dtd

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

              <!DOCTYPE validators PUBLIC

                                       "-//Apache Struts//XWork Validator 1.0.3//EN"

                                       "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

 

3、在UserAction-user_add-validation.xml中定义校验规则--需要针对哪个属性执行什么校验

              定义方法有2种:字段优先非字段优先

                            这两种写法没有什么本质区别,但是从可读性的角度上说,建议优先考虑使用字段优先

              校验子定义在struts2-core.jar的中/com/opensymphony/xwork2/validator/validators/default.xml

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

              <!DOCTYPE validators PUBLIC

                                       "-//Apache Struts//XWork Validator 1.0.3//EN"

                                       "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

              <validators>

                            <field name="username">采用字段优先的定义方法,所以首先说明针对哪个属性进行校验

                                          <field-validator type="requiredstring">  说明需要进行什么校验,具体的校验子的名称定义在default.xml

                                                        <message>用户名称不能为空!</message>  默认的报错信息

                                          </field-validator>

                            </field>

              </validators>             

 

4、在<action>的配置中必须定义<result name="input">,用于说明所使用的校验报错页

必填验证required

              验证null,要求必须填写,用于针对对象类型属性,如果使用简单类型则失效,因为默认值

                            <field name="age">

                                          <field-validator type="required">

                                                        <message>年龄必须填写!</message>

                                          </field-validator>

                            </field>

                           

必须字串验证requiredstring

              验证null和空串,默认自动使用trim()方法

                            <field name="username">

                                          <field-validator type="requiredstring">

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

                                          </field-validator>

                            </field>

                           

整型数据范围验证int/short/long

              属性非空时执行范围验证,其中参数min用于定义最小值,max用于定义最大值,可以只定义一个方向,允许等于

                                          <field name="age">

                                                        <field-validator type="int">

                                                                      <param name="min">18</param>

                                                                      <param name="max">65</param>

                                                                      <message>年龄应该在${min}到${max}之间!</message>

                                                        </field-validator>

                                          </field>

                                         

浮点数范围验证double

              参数  minInclusive maxInclusive  允许等于

                             minExclusive  maxExclusive             不允许等于

                            可以自行搭配使用

                                          <field name="salary">

                                                        <field-validator type="double">

                                                                      <param name="minInclusive">1000</param>

                                                                      <param name="maxExclusive">10000</param>

                                                                      <message>工资额度只能在1000到10000之间!</message>

                                                        </field-validator>

                                          </field>                                                    

 

日期范围验证date(基本没用)

              参数min和max

                            <field name="hiredate">

                                          <field-validator type="date">

                                                        <param name="min">1989-2-3</param>

                                                        <param name="max">2018-4-5</param>

                                                        <message>入职日期应该在1989-2-3到${max}之间!</message>

                                          </field-validator>

                            </field>            

             

字段表达式验证fieldexpression()

              参数expression用于定义一个和字段相关的OGNL表达式

                            <field name="password">

                                          <field-validator type="fieldexpression">

                                                        <param name="expression">

                                                                      <![CDATA[password==repassword]]>

                                                        </param>

                                                        <message>两次输入口令必须一致!</message>

                                          </field-validator>

                            </field>

                           

邮箱格式验证email

信用卡号格式验证creditcard  --VISA

网址格式验证url

 

数据类型转换验证conversion

              数据类型转换失败的默认报错信息为:Invalid field value for field "字段名称"

                            <field name="age">

                                          <field-validator type="conversion">

                                                        <message>数据格式错误!</message>

                                          </field-validator>

                            </field>

             

              去除默认的报错信息

                            1、配置常量,说明全局资源文件名称

                                                        struts.custom.i18n.resources=testmessages,testmessages2

                                                       

                                          sturts.xml                  <constant name="struts.custom.i18n.resources" value="msgs"/>

                                         

                            2、定义对应的全局的资源文件   src/msgs.properties

                                          对应的key值可以在struts2-core.jar中查找     /com/opensymphony/xwork2/xwork-messages.properties

                            3、在properties文件中定义

                                          xwork.default.invalid.fieldvalue=

                                          注意等号后面没有任何内容,目的在于不显示任何报错信息,具体的格式错误报错使用conversion实现

                            新的问题:

                            <field name="age">

                                          <field-validator type="conversion">

                                                        <message>数据格式错误!</message>

                                          </field-validator>

                                          <field-validator type="required">

                                                        <message>年龄必须填写!</message>

                                          </field-validator>

                            两个报错信息都显示,不符合一般的使用习惯,针对这个问题,验证框架提供了短路校验的支持,也就是说上面的校

              验没有通过则后续校验不执行

                           

如何实现短路校验?short-circuit

                                          <field name="age">

                                                        <field-validator type="conversion" short-circuit="true">

                                                                      <message>数据格式错误!</message>

                                                        </field-validator>

                                                        <field-validator type="required">

                                                                      <message>年龄必须填写!</message>

                                                        </field-validator>

字串长度校验stringlength

              参数minLength和maxLength,不区分中英文

                            <field name="username">

                                          <field-validator type="stringlength">

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

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

                                                        <message>名称应该在6到20个字符之间!</message>

                                          </field-validator>

                            </field>                        

正则式验证regex

                            <field name="username">

                                          <field-validator type="regex">

                                                        <param name="regex">

                                                                      <![CDATA[^[a-zA-Z0-9]{6,20}$]]>

                                                        </param>

                                                        <message>用户名称不合法!</message>

                                          </field-validator>

                            </field>

                           

验证框架同时支持客户端验证(开发时基本不用,因为验证受限)

              <s:form action="user_add.action" validate="true">在具体开发中不建议使用,因为能够支持的客户端验证比较有限,一般建议使用jquery.validate.js                                                                                                                                                                                                                                                                         

猜你喜欢

转载自blog.csdn.net/xiaonan_it/article/details/81137684