A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ziyangfgt 中级黑马   /  2017-5-25 20:19  /  728 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



struts2中的验证器可以在登录时用来验证数据是否输入了,关于验证器的写法有两种,分为编程式验证和声明式验证,其中推荐声明式验证。
编程式验证

在相对应的action动作类(继承了actionsupport)中重写validate方法。

validate方法会在动作方法执行之前进行验证;例代码如下;

public void validate(){

if(StringUtils.isEmpty(user.getUsername())){

addfieldError(“username”,”请输入用户名”);

}

}

当重写了validate方法就会对动作类中的所有动作发放进行验证。解决这个问题有两种方法,第一种就是在需要验证的动作方法上方使用@skipvalidation的注解,另一种就定义验证方法的名称改为validate+动作名称,动作名称的首字母要大写。
声明式验证

声明式验证就是编写验证规则在xml文件中,在动作类所在的包中建立一个actionclassname-validation.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”>
<!– 当使用ActionClassName-validation.xml来命名文件时,它是一个动作类验证器。会验证动作类中的所有动作方法 –>
<validators>
<!– 基于字段的声明式验证 –>
<!– field中name属性指定的是表单name属性的取值 –>
<field name=”username”>
<!– struts2框架为我们集成了很多的内置验证器。requiredstring会验证输入内容是否为空,是否为空字符串。并且去掉左右空格–>
<field-validator type=”requiredstring”>
<message>用户名呢</message>
</field-validator>
</field>
</validators>

其中dtd约束在xwork的jar包中,它针对的是动作类中全部的动作方法,所以对于不需要的验证可以用@skipvalidation注解(注意在编程式验证中的@skipvalidation是在需要的动作方法中添加,这个是在不需要的动作方法中添加),或者咋建立xml文件职工以actionclassname-actionname-validation.xml的形式建立,actionname是struts.xml文件中action属性中的name的取值。
基于验证器的验证

<!– 基于验证器的验证 –>
<validator type=”requiredstring”>
<!–以注入的方式,提供要验证的字段信息   setFieldName(“password”);
–>
<param name=”fieldName”>password</param>
<message>密码必须输入</message>
</validator>

<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>

以上是struts自带的常用声明式验证。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马