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

Struts 2的输入校验(二)

2013-08-17 16:47 441 查看

9.2 基于Struts 2验证框架的输入校验

Struts 2提供了更高效,简易的校验框架,用户只需设置校验配置文件即可完成输入校验。基于验证框架来完成输入校验,只需在与Action同目录下下创建一个xml格式的验证文件即可,而无需validate方法。实现了Action类与配置文件的分离,在配置文件中实现对Action类中某字段的校验。

(1) 编辑校验规则文件

校验文件是XML格式,命名规则:<Action类名>-validation.xml ,每一个Action都可以对应有一个这样的校验配置文件,用来对当前Action进行校验。field用来指定Action中要校验的属性字段,属性字段名称应该与field的name属性值相同 ,在field中一般添加field-validator标记,用来指定验证规则(是否为空规则、字符组成规则),param用来指定正则表达式,message指定不符合规则的错误提示信息。<Action名>-validation.xml文件示例:

(2) 字段校验和非字段校验:

<validators><!-- 字段校验field --><fieldname="name"><field-validatortype="requiredstring">//requiredstring指的是必填字符串校验器 ,也就是说校验规则是必填字符串校验器<paramname="trim">true</param><message>必须输入用户名!!!</message></field-validator><field-validatortype="regex"><paramname="expression"><![CDATA[(\w{4,25})]]></param><message>用户名只能是字母和数字,且长度在4-25之间</message></field-validator></field><!-- 非字段校验 validator--><validatortype="校验器名称"><paramname="fieldName">要被校验的字段</param><paramname="参数名">参数值</param><message>校验错误提示信息</message></validator></validators>
字段校验和非字段校验可混合在同一个XX-validation.xml文件中,但是有顺序:所有非字段优于字段,非字段先校验,若某个字段的非字段校验失败,则字段方式校验都不执行,反之,字段校验却不会影响非字段。

(3) 配置校验文件

XX-validation.xml校验文件示例:
<!DOCTYPEvalidatorsPUBLIC"-//OpenSymphony Group//XWork Validator 1.0.2//EN""http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators>//字段校验field<fieldname="password"><field-validatortype="requiredstring"><messagekey="error.password.required"/></field-validator><field-validatortype="stringlength"><paramname="trim">true</param><paramname="minLength">4</param><paramname="maxLength">10</param><messagekey="errors.range"/></field-validator></field><fieldname="password2"><field-validatortype="requiredstring"><messagekey="error.password2.required"/></field-validator></field>//非字段校验validator<validatortype="expression"><paramname="expression">password eq password2</param><messagekey="error.password.match"/></validator></validators>
配置中的两个问题:一、验证器名称 在 xwork-2.0.4.jar 包中,在 /com/opensymphony/xwork2/validator/validators 路径下default.xml文件中有所有 Struts2 自带的输入校验器定义。分为以下几种:1.required必填2.requiredstring必填字符串3.int整数4.long5.short6.double7.date日期8.expression9.fieldexpression字段表达式10.email邮件地址11.url网址12.visitor13.conversion14.stringlength字符串长度15.regex正则表达式16.conditionalvisitor二、用于输出的提示信息用一个key来表示message标签的key属性,其实是在一个用户自定义的资源文件中提前定义好了的,方便实现国际化。***用法:首先自定义一个资源文件errorMsgs.properties

然后,将该资源文件在struts.xml中进行配置:
<constantname="struts.custom.i18n.resources"value="errorMsgs"></constant>
最后才可以在验证文件中使用:
<fieldname="pass"><field-validatortype="requiredstring"><paramname="trim">true</param><messagekey="pass.required"/></field-validator></field>

9.3 使用客户端校验

Struts2要完成客户端校验,视图页面就必须使用Struts2标签库。然后在<s:form>标签中添加validate=”true”属性即可。form的theme不能是simple
<s:formaction="validateAction"validate="true"></s:form>
其他任何文件不作改动,查看页面源码发现多了两个JS文件,但效果并无太大区别。
<script type="text/javascript" src="/Struts2_Validate_ByFrame/struts/xhtml/validation.js"></script><script type="text/javascript" src=\'#\'" /Struts2_Validate_ByFrame/struts/utils.js"></script>
本文出自 “乐乐等待花开” 博客,请务必保留此出处http://lele185039.blog.51cto.com/5801618/1275469
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: