概述
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
struts2表单验证
1.struts2手动验证:
action类要继承ActionSupport类(已实现Validateable接口)或者实现Validateable接口,重写Validateable接口的validate()方法;
action类中要声明与前台页面一致的属性字段,并提供set/get方法,这样可以确保验证相关的方法的执行顺序为:set()→validate()→请求处理方法(目标方法);
validate()方法中验证:根据需要编写代码验证即可以,需要注意的是,ActionSupport类中提供了一个方法addFieldError(String
key, Stringvalue),用于保存验证不通过后的错误信息,同时验证拦截器(AnnotationValidationInterceptor)底层也是通过判断这个方法返回的集合是为空来判断验证是否通过,如果通过则执行下一个环节,如果不通过直接返回“input”,前台则跳转到“input”结果对应的页面(很多拦截器处理不通过都会返回input”因此这个结果处理不配经常会发生页面中报一大片错误的现象:
Messages: |
No result defined for action com.struts2.validate.ValidateAction and result input |
);
2.验证指定的方法:
按以上操作、配置后框架会对所有的方法进行验证,这并不符合开发的需要,因此我们需要指定需要验证的方法,要实现此效果,可在validate()方法的签名后面加上需要验证的业务方法名即可,需要注意业务方法名的首字每要大写。以上功能的实现原理还是要追溯到验证的拦截器中处理验证的源码。
2. struts2xml验证:
前页的步骤与手动验证一样,证验方式不在代码中写,而是通过xml文件来配置,具体配置方式为:
在与action类同级目录下新建一个xml文件,命名为:action类名-validation.xml文件中内容按xwork-validator-1.0.3.dtd的约束配置,需要配置的内容为:
***************************************************************
<validators>
<!--field:指定要验证的字段 -->
<field name="username">
<!--field-validator:指定要验器,type:验证器的名称(与拦截器一样,底层已写好)-->
<field-validator type="requiredstring">
<!--param:向验证器传入参数 -->
<param name="trim">true</param>
<!--message:验证失败后需要提示的信息 -->
<message>用户名不能为为空!!!</message>
</field-validator>
</field>
</validators>
***************************************************************
如果验证需要用到多个验证器,则可以在<field>下增加多个<field-validator>标签,配置方式与上面的模式一样;
按以上配置,同样会存在对所有的业务方法执行前进行验证操作的问题,为解决这个问题,只需要在验证xml的文件命名做下调整即可,命名要求为:action类名-actionName-validation.xml.
3.xml验证器:
Struts2xml验证是基于底层写好的的验证规则的,含有这些验证规则,用于处理xml验证的java类,就是验证器,我们可以从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="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
<validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
<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"/>
<validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
</validators>
***************************************************************
------------------------------------------------------------2015年8月6日笔记--------------------------------------------------------------------------------
最后
以上就是超级书包为你收集整理的黑马程序员---struts2学习笔记之七(表单验证)-----------android培训、java培训、java学习型技术博客、期待与您交流!------------的全部内容,希望文章能够帮你解决黑马程序员---struts2学习笔记之七(表单验证)-----------android培训、java培训、java学习型技术博客、期待与您交流!------------所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复