zoukankan      html  css  js  c++  java
  • Struts数据验证

          Action类继承了ActionSupport类,而该类实现了Action、Validateable、ValidationAware、TextProvider、LocaleProvider和Seriazbale接口。而其中Validatteable 接口定义了一个validateable()方法,只要在用户的Action中重写该方法就可以实现验证功能。

     1 /**
     2  *会在执行execute之前执行,对传入的数据进行检验
     3  */
     4     @Override
     5     public void validate() {
     6         // 如果用户名为空,就把错误信息添加到Action 类的 fieldError
     7         if (user.getUsername()==null||user.getUsername().trim().equals("")) {
     8             addFieldError("user.username", "用户名必须填!");
     9         }
    10     }

      在类中定义了校验方法后,该方法会在执行系统的execute()方法执行之前执行,如果执行该方法之后Action类的fieldError中已将包含了数据校验错误信息,将把请求转发到input视图处。

    1     <action name="StrutsDemo1" class="cn.itcast.struts2.action.StrutsDemo1">
    2    <!-- 配置结果页面的跳转 在Action 中根据不同的返回值配置不同的跳转页面 -->
    3    <result name="success">/demo1/main.jsp</result>
    4    <result name="input">login.jsp</result>
    5     </action>    

    会在登录界面显示错误信息。

    struts2提供了校验框架,只需要增加一个校验配置文件就可以完成对数据的校验。

    命名格式:ActionName-validation.xml     其中ActionName就是需要校验的用户自定义的Action类的类名 ,且该文件应与Action位于同一路径,如果Action类中有多个方法,对应的struts.xml文件中就有多个Action配置,这时如果想对其中一个方法进行验证,命名应该为ActionName-name-calidation.xml,这里的name是在struts.xml中的Action属性里面的name。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2  <!DOCTYPE validators PUBLIC
     3           "-//Apache Struts//XWork Validator 1.0.3//EN"
     4          "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators>
     5      <field name="user.username">
     6          <!-- 验证字符串不能为空 ,选项必填-->
     7          <field-validator type="requiredstring">
     8                <!-- 去空格 -->
     9               <param name="trim">true</param>
    10               <!-- 错误提示信息 -->
    11               <message>用户名必填</message>
    12           </field-validator>
    13       </field>
    14 </validators>

    其他整数校验器:

     1    <!-- 验证字符串不能为空 ,选项必填-->
     2         <field-validator type="requiredstring">
     3             <!-- 去空格 -->
     4             <param name="trim">true</param>
     5             <!-- 错误提示信息 -->
     6             <message>用户名必填</message>
     7         </field-validator>
     8             
     9         <!-- 整数大小校验器 -->
    10         <field-validator type="int">
    11         <param name="min">18</param>
    12         <param name="max">100</param>
    13         <message>必须在18和100之间</message>
    14         </field-validator>
    15             
    16         <!-- 日期校验器 -->
    17         <field-validator type="date">
    18         <param name="min">1990-01-01</param>
    19         <param name="max">2017-01-01</param>
    20         <message>日期必须在1990-01-01到2017-01-01之间</message>
    21         </field-validator>
    22             
    23         <!-- 邮件地址校验器 -->
    24         <field-validator type="email">
    25             <message>必须是有效的email地址</message>        
    26         </field-validator>
    27         
    28         <!-- 网址地址校验器 -->
    29         <field-validator type="url">
    30         <message>必须输入有效的网址</message>
    31         </field-validator>
    32         
    33         <!-- 字符串长度校验器 -->
    34         <field-validator type="stringlength">
    35         <param name="minlength">6</param>
    36         <param name="maxlength">20</param>
    37         <message>字符长度必须在6到20之内</message>
    38         </field-validator>
    39         
    40         <!-- 正则表达式校验器 -->
    41         <field-validator type="regex">
    42         <param name="expression"><![CDATA[(d{6})]]></param>
    43         <message>必须是6位的数字</message>
    44         </field-validator>
    45         
  • 相关阅读:
    uni-app调用原生的文件系统管理器(可选取附件上传)
    uni-app图片压缩转base64位 利用递归来实现多张图片压缩
    解释器模式
    外观模型
    装饰模式
    组合模式
    原型模式
    简单工厂模式
    抽象工厂模式
    工厂方法模式
  • 原文地址:https://www.cnblogs.com/the-wang/p/7609123.html
Copyright © 2011-2022 走看看