您好,欢迎访问三七文档
第五章数据校验器例5-1重写validate()方法手动校验Struts2可以通过在Action中重写ActionSupport类的validate()方法来完成Action中各方法的验证。publicvoidvalidate(){if(user.getUsername()==null)||””.equals(user.getUsername.tirm())){this.addFieldError(“user.username”,”用户名不能为空”);}elseif(user.getUsername()!=null&&!pattern.matches(“\\w{5,50}”,user.getUsername().trim())){this.addFieldError(“user.username”,”用户名输入不合法,必须长度为5~50之间的字母和数字“);}if(user.getPassword()==null)||””.equals(user.getPassword().trim())){this.addFieldError(“user.password”,”密码不能为空”);}elseif(user.getPassword()!=null&&!Pattern.matches(“\\w{5,50}”,user.getPassword().trim())){this.addFieldError(“user.password”,”密码输入不合法,必须长度为5~50之间的字母和数字“);}if(user.getAge()0||user.getAge()130){this.addFieldError(“user.age”,”年龄输入不合法”);}}例5-2重写validateXxx()方法手动校验Struts的Action类包含多个方法,使用validate()方法对所有的方法都将使用同样的输入验证。在实际使用中,通常对各方法的验证并不相同,此时可以使用validateXxx()方法进行输入验证。publicvoidvalidateReg(){//}publicvoidvalidateLogin(){if(user.getUsername()=null||“”.equals(user.getUsername().tirm())){this.addFieldError(“user.username”,”用户名不能为空);}if(user.getPassword()=null||“”.equals(user.getPassword().tirm())){this.addFieldError(“user.password”,”用户名不能为空);}例5-3使用验证框架完成服务器端校验通过编写java代码的方式来完成服务器端的验证,重用性低,不利于管理。Struts2提供了一套验证框架来进行服务器和客户端的数据校验。Struts2中的每个Action都可以有一个验证文件,该验证文件与Action处于同一目录中,命名格式为:Action的名称-validation.xml例5-3使用验证框架完成服务器端校验字段校验器配置格式validatorsfieldname=“被校验的字段”field-validatortype=“校验器类型名”paramname=“参数名”参数值/param!—可以有多个参数--message校验失败时的提示信息/message/field-validator/field!—下一个要校验的字段--/validators例5-3使用验证框架完成服务器端校验?xmlversion=“1.0”encoding=“GBK”?!DOCTYPEvalidatorsPUBLIC“-//OpenSymphonyGroup//XWorkValidator1.0.2//EN”“”validatorsfieldname=“user.username”field-validatortype=“requiredstring”paramname=“trim”true/parammessage用户名不能为空/message/field-validatorfield-validatortype=“regex”paramname=“expression”![CDATA[(\W{5,50})]]/parammessage用户名输入不合法,必须是长度5~50之间的字母或数字/message/field-validator/fieldfieldname=“user.username”field-validatortype=“requiredstring”paramname=“trim”true/parammessage用户名不能为空/message/field-validatorfield-validatortype=“regex”paramname=“expression”![CDATA[(\W{5,50})]]/parammessage用户名输入不合法,必须是长度5~50之间的字母或数字/message/field-validator/fieldfieldname=“user.age”field-validatortype=“int”paramname=“min”1/paramparamname=“max”130/param/field-validator/field/validators例5-4使用验证框架完成客户端校验在JSP页面上,将form的validate属性设置为true即可s:formaction=“valFrameworkReg”validate=“true”在Struts2中,进行客户端校验将由框架在页面中自动生成JavaScript代码,提交时调用函数validateForm_Action名称()例5-5国际化校验的提示信息建立配置文件validationMessage.propertiesuser.username.requried=用户名不能为空user.username.regex=用户名输入不合法,必须为长度为5~50之间的字母或数字user.password.requried=密码不能为空user.password.regax=密码输入不合法,必须为长度为5~50之间的字母或数字user.age=年龄必须在${min}和${max}之间!fieldname=“user.username”field-validatortype=“requiredstring”paramname=“trim”true/parammessage${getText(“user.username.requried”)}/message/field-validatorfield-validatortype=“regex”paramname=“expression”![CDATA[(\W{5,50})]]/parammessage${getText(“user.username.regex”)}/message/field-validator/fieldfieldname=“user.age”field-validatortype=“int”paramname=“min”1/paramparamname=“max”130/parammessage${getText(user.age”)}/message/field-validator/field/validators例5-6非字段校验器规则在配置校验规则时,Struts2提供了两种规则,即字段校验规则和非字段校验规则。非字段校验器的整体风格:validators!--0到多个validator元素--validatortype=“校验器类型名”paramname=“fieldName”被校验的字段/param!--可以有0个或者多个param元素--paramname=“参数名”参数值/parammessage校验失败的提示信息/message/validator/validators例5-7常用内建校验器为了简化web开发人员的开发工作,Struts2中提供了一些内建校验器,使用它们能够完成大部分的校验工作。常用的内建校验器有:必填字符串校验器,整数范围校验器,正则表达式校验器,必填校验器,字符串长度校验器,网址校验器,邮件地址校验器,日期校验器和表达式校验器。例5-7常用内建校验器1)必填字符串校验器:名称为requiredstring,用于进行字符串的必填校验。字段校验器风格配置如下:fieldname=“user.username”field-validatortype=“requiredstring”paramname=“trim”true/parammessage用户名不能为空/message/field-validator/field非字段校验器风格配置如下:validatortype=“requiredstring”paramname=“fieldname”user.username/paramparamname=“trim”true/parammessage用户名不能为空/message/validator例5-7常用内建校验器2)整数范围校验器:名称为int,该校验器用于校验整数是否在指定的最小值和最大值之间。对于字段校验器,配置如下:fieldname=“user.age”field-validatortype=“int”paramname=“min”1/paramparamname=“max”130/parammessage年龄输入不合法,输入在${min}到${max}之间/message/field-validator/field对于非字段校验器,配置如下:validatortype=“int”paramname=“fieldname”user.age/paramparamname=“min”1/paramparamname=“max”130/parammessage年龄输入不合法,输入在${min}到${max}之间/message/validator例5-7常用内建校验器3)正则表达式校验器:名称为regex,用于检测字符串是否匹配某一正则表达式。对于字段校验器,配置如下:fieldname=“user.age”field-validatortype=“regex”paramname=“expression”![CDATA[(\W{5,50})]]/parammessage年龄输入不合法,必须在5~50之间/message/field-validator/field对于非字段校验器,配置如下:validatortype=“regex”paramname=“fieldname”user.age/paramparamname=“expression”![CDATA[(\W{5,50})]]/parammessage年龄输入不合法,必须在5~50之间/message/validator例5-7常用内建校验器4)必填校验器
本文标题:第五章数据校验
链接地址:https://www.777doc.com/doc-4004960 .html