• Struts2 输入校验


    Struts2 的表单输入校验有多种方法。

    1.重写 ActionSupport 类的 validate() 方法。

      将需要验证的逻辑写在该方法中,那么当执行该Action的时候会先执行该方法再执行execute()方法。但这个方法有一个缺陷,就是一个表单只能对应一个Action.

    2.重写 validateXxx 方法。

      比如在 LoginAction 类中,我们想有验证login表单和regist表单的两个验证方法,则分别定义 validateLogin() 和 validateRegist() 方法,然后在配置 struts.xml 时指定 action=login 时执行 login() 方法,action=regist 时执行 regist() 方法,这样就会先执行 validateLogin 或者 validateRegist, 校验成功时再执行 login() 和 regist()。这个方法的逻辑比较清晰,相对第一个方法要好。

    3.使用 Struts2 验证框架,利用 ***-validation.xml 配置文件

      比如执行 login 表单逻辑的 LoginAction.java 中定义了正常的 getter 和 setter 方法,就是一个正常的Action类。那么验证 login 表单就可以用 LoginAction-validation.xml 来验证,而且两个文件要放在同一个目录中。这个xml文件配置举例如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
     3     "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
     4 
     5 <validators>
     6     <field name="username">
     7         <field-validator type="requiredstring">
     8             <param name="trim">true</param>
     9             <message key="username.required"></message>
    10         </field-validator>
    11     </field>
    12     <field name="psd">
    13         <field-validator type="requiredstring">
    14             <param name="trim">true</param>
    15             <message key="psd.required"></message>
    16         </field-validator>
    17     </field>
    18 </validators>

      上面的代码是分别对用户名和密码字段进行验证。

      先说一下<field-validator>标签,type属性确定了校验器的名称。struts2中有很多可用的校验器。如:

      (1)必填校验器 required

      (2)必填字符串校验器 requiredstring

      (3)整数校验器 int

      (4)日期校验器 date

      (5)字段表达式校验器 fieldexpression

      (6)邮件地址校验器 email

      (7)网址校验器 url

      (8)字符串长度校验器 stringlength

      (9)正则表达式校验器 regex

      用的时候可以具体查一下有哪些param.

      再说一下 <message>标签,这是当验证不通过时返回给前端的提示信息,可以写在<message></message>标签中间,但为了实现国际化,最好是使用上面 key 的方式。至于这个 key 在哪里呢,我们可以定义一个 errormsg.properties 文件放在 src 目录下,里面都是key-value对,一般都是key 用英文,value用中文,实验国际化。并不是这样就完事儿了的,还要把这个properties文件部署到struts.xml才可以。具体部署如下:

    1 <struts>
    2     <!-- 下面这行是为了实现国际化 -->
    3     <constant name="struts.custom.i18n.resources" value="errormsg"></constant>
    4     
    5     <package name="default" extends="struts-default">
    6 。。。。。。。

      第三行代码就是关键所在。

  • 相关阅读:
    从零开始PHP学习
    从零开始PHP学习
    从零开始PHP学习
    从零开始PHP学习
    从零开始PHP学习
    [暂停一天]从零开始PHP学习
    [Laravel 5] 表单验证 Form Requests and Controller Validation
    JQuery 在$(window).load() 事件中 不运行 $(window).resize()
    JS计算两个日期相差几天
    python 学习之Windows 下的编码处理!
  • 原文地址:https://www.cnblogs.com/lihuiyy/p/2958258.html
Copyright © 2020-2023  润新知