基于XML文件的客户端校验

来源:互联网 发布:linux装vim 编辑:程序博客网 时间:2024/05/18 00:36

所谓客户端校验,就是在提交请求之前对用户输入信息进行校验。在Struts2应用中使用客户端校验需要:
1>将输入页面的表单元素全都改为Struts2标签来生成表单
2>为

<s:form action="login" validate="true">    <s:textfield name="username" label="username" />    <s:textfield name="password" label="password" />    <s:submit value="login" />    <s:reset value="reset" /></s:form>

编写校验规则文件:Struts2的Action对应的校验文件命名规则:ActonName-validation.xml并且需要保存在同目录下

客户端校验器分为两种:字段校验和非字段校验器。校验器的根元素为:

<validators>    <field name="校验字段">        <field-validator type="校验器名">            <!--接下来为不同的校验器指定参数-->            <param name="参数名">...</param>            ...            <!--指定校验失败后的提示信息,key可以指定输出国际化信息的key-->            <message key>...</message>        </field-validator>    </field></validators>

非字段校验器:配置风格为:

<validators>    <validator type="校验器名">        <!--必须指定的参数,指定需要被校验的字段-->        <param name="fieldName">...</param>        <!--为不同的校验器指定对应的参数-->        <param name>...</param>        ...        <!--校验失败后的提示信息-->        <message key>..</message>    </validator></validators>

短路校验器:如果一个字段的短路校验器执行校验失败,同一个字段的其他校验器就不会再继续校验了。通过为元素下的子元素或者子元素指定属性:short-circuit=”true”即可指定其为短路校验器

在Struts2文件中,一个Action不一定只对应一个name,因此需要为不同的name相同的Action的校验文件指定别名,别名命名方式为:ActionName-XMLActionName-validation.xml

<package ...>    <action name="login" class="LoginAction" method="login">        <result>welcome.jsp</result>    </action>    <action name="reLogin" class="LoginAction" method="reLogin">        <result>welcometoo.jsp</result>    >/action></package>//校验文件:LoginAction-login-validation.xml<validators>    <field name="username">        <field-valiadtor type="requiredString">            <message>必须填写用户名</message>        </field-validator>    </field></validators>

客户端校验器仅仅支持下面几种校验器:
1>required:必填校验器.该校验器接受如下参数:
fieldName:指定校验的Action属性名。采用字段校验器则不需指定该参数
2>requiredString:必填字符串校验器,该校验器接受如下参数:
fieldName:同上
trim:是否在校验之前截断被校验属性值前后的空白,默认为true
3>int/long/short:整数校验器,该校验器接受如下参数:
fieldName:同上
min:指定该属性的最小值
max:指定该属性的最大值
4>date:日期校验器,该校验器接受如下参数:
fieldName:同上
min:指定该属性的最小值,为yy-mm-dd形式
max:指定该属性的最大值,为yy-mm-dd形式
5>expression:非字段表达式校验器,该校验器接受如下参数:
expression:指定一个逻辑表达式,返回true时则校验成功
6>fieldexpression:字段表达式校验器.该校验器接受如下参数:
fieldName:同上
expression:同上
7>email:邮件地址校验器。该校验器接受如下参数:
fieldname:同上
8>url:网址校验器。该校验器接受如下参数:
fieldname:同上
9>Visitor:复合属性校验器。该校验器接受如下参数:
context:指定校验规则文件的context
appendPrefix:指定校验失败后是否增加message提示信息,该校验器也有一个message元素
对于这个校验器,使用的情况为Action的属性为另一个类,这时候我们需要继续校验该类属性,例如:

public class login[    private User user;    //omit setter and getter method}

这时候我们除了校验Login还需要校验User,如果需要校验User,我们可以我Use也提供一个校验文件,User类的校验文件的命名规则为:User-validation.xml,如果在visitor校验器里指定了context属性值,则命名为;User-contextValue-validation.xml

10>stringLength:字符串长度校验器。该校验器接受如下参数:
fieldname:同上
minLength:最小长度
maxLength:最大长度
trim:是否在校验钱删除前后两边空白
11>regex:正则表达式校验器。该校验器需要指定如下参数:
fieldName:同上
regex : 指定匹配用的正则表达式
caseSensitive:指定是否区分大小写,默认为true

1 0