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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.  Struts中的数据验证
用户的输入验证,必须做,且工作量巨大。
1、验证的方式
         客户端验证:javascript
         服务端验证:逻辑验证(我们的代码)
注意:如果客户端和服务端二选一的话,服务器端的不能省。
实际开发中:客户端+服务端
         
2.1、编程式验证
         前提:动作类必须继承ActionSupport  在代码中编写验证规则。
所有编程式验证的弊端:硬编码。
2.1.1针对动作类中的所有动作方法进行验证:
在动作类中覆盖public void validate()方法。该验证方式会验证动作类的所有方法,给不需要验证的方法需要加上@SkipValidation注解
  
    public void validate() {
  
        //在执行动作方法前,会先执行该验证的额方法!(validate)
  
        if(StringUtils.isEmpty(user.getName())){
  
            //针对不正确的情况,map中存放消息即可!当该map为空时,证明验证通过!
  
            addFieldError("name", "用户名不能为空!");
  
        }
  
    }
  
2.1.2针对动作类中的某个动作方法进行验证
validation方法遵守书写规范。validate+动作方法名(首字母大写)
  
public  String insertUserOrUpdate() throws  Exception {
  
    return SUCCESS;
  
}
  
//该验证只对insertUserOrUpdate做验证!
  
public void validateInsertUserOrUpdate(){
  
    addFieldError("name", "用户名不能为空!");
  
}
  
2.2、声明式验证(推荐)
通过编写验证规则的xml文件。需要验证时,编写xml文件,不要验证,就不写。
优势:解决了2.1编程式验证的弊端
2.2.1针对动作类中的所有动作进行验证:在动作类所在的包中,建立一个ActionClassName-validation.xml的文件
  
<?xml version="1.0"  encoding="UTF-8"?>
  
<!--  约束:xwork-core包中的xwork-validator.dtd文件中-->
  
<!DOCTYPE validators  PUBLIC
  
        "-//Apache Struts//XWork Validator 1.0.3//EN"
  
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
  
<validators>
  
    <!-- 要验证的字段:name属性和form表单一致 -->
  
    <field name="name">
  
        <!--
  
            指定验证器,xwork-core包中的com.opensymphony.xwork2.validator.validators.default.xml文件中
  
            requiredstring是内置的验证器,默认会去掉首尾的空格,验证null""
  
-->
  
        <field-validator type="requiredstring">
  
            <!-- 提示信息 -->
  
            <message>请输入用户名</message>
  
        </field-validator>
  
    </field>
  
</validators>
  
2.2.2针对动作类中的某个动作进行验证:在动作类所在的包中建立一个xml文件,名称为ActionClassName-ActionName-validation.xml

0 个回复

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