Struts2入门(9):数据验校

本文介绍Struts2框架中的表单数据验校方法,包括基于XML和注解的验校方式,并列举了常用的验校器及其配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Struts2 数据验校


Struts2 对于提交的表单数据后端验校,除了一般直接将验校逻辑写在对应的 Action 中,其本身也提供了2种更加方便的数据验校方式:基于XML验校、基于注解验校;

基于XML验校

Struts2 提供了在 struts.xml 对验校过程进行配置;
加入一个提交的表单JSP如下:
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Hello World</title>
  </head>
  <body>
  <h1>Hello World</h1>
  <form action="login" method="post">
      
      <s:filederror fieldName="username" /><br/>   <!--提示表单验证错误信息-->
      <s:filederror fieldName="age" /><br/>
      
      <label>Enter your name</label><input type="text" name="name"/><br/>
      <label>Enter your age</label><input type="text" name="age" /><br/>
      <input type="submit" value="submit"/>
  </form>
  </body>
</html>
需要验校 name 不为空,age 不为空且 18<=age<=75,注意这2个属性已经包含在LoginAction的私有域中;

验校xml文件需要放置在 对应验校的Action同一目录下,同时命名格式为" [action-class]-validation.xml",在Struts2运行时会自动读取该验校文件,当验校失败时,在这个示例中会返回“login.jsp”中,同时提示<message>中的内容(在JSP文件中使用  <s:fielderror> 标签显示,如上示例);
loginAction-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" >
<validators>
    <!--name属性的验校配置-->
    <field name="name">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>Please enter your name</message>
        </field-validator>
    </field>
    <!--age属性的验校配置-->
    <field name="age">
        <field-validator type="ini">
            <param name="min">18</param>
            <param name="min">75</param>
            <message>age must between 18 and 75</message>
        </field-validator>
    </field>
</validators> 

以下是 Struts2 提供的常用的数据验证器:


requiredstring 必填字符串验校器

该验校器要求字段必须非空而且长度>0,同时不能是“”;
<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>name is required</message>
        </field-validator>
    </field>
</validators>

regex 正则表达式验校器 

该验校器使用一个正则表达式验校字段是否合法,其中可选的 caseSensitive 属性用于指定进行正则表达式匹配是否区分大小写(默认为true);
<validators>
    <field name="id">
    <validator type="regex">
        <param name="fieldName">id</param>
        <param name="regex">\d{3}-\d{7}</param>
        <message>illegal id</message>
    </validator>
    </field>
</validators>

stringlength 字符串长度验校器

该验校器用于验校字符串长度;
<validators>
    <field name="username">
        <field-validator type="stringlength">
            <param name="trim">true</param>
            <param name="minLength">1</param>
            <param name="maxLength">10</param>
            <message>the length of username must between ${minLength} and ${maxLength}</message>
        </field-validator>
    </field>
</validators>

int 整型数验校器

该验校器用于验校整数(包括int,long,short)的大小是否符合规定;
<validators>
    <field name="age">
        <field-validator type="int">
            <param name="min">18</param>
            <param name="max">65</param>
            <message>age must between ${min} and ${max}</message>
        </field-validator>
    </field>
</validators>

doube 浮点数验校器

该验校器用于验校浮点数(包括double,float)的大小是否符合规定;
<validators>
      <field name="point">
        <field-validator type="double">
            <param name="min">0.45</param>
            <param name="max">10.56</param>
            <message>point must between ${min} and ${max}</message>
        </field-validator>
    </field>
</validators>

date 日期验校器

该验校器用于验校一个日期值在某个指定的范围内;
<validators>
    <field name="checkInDate">
        <field-validator type="date">
            <param name="fieldName">checkInDate</param>
            <param name="min">2017-8-10</param>
            <param name="max">2017-9-10</param>
            <message>check in date must between ${min} and ${max}</message>
        </field-validator>
    </field>
</validators>

email 邮件地址验校器

该验校器用于验校一个email地址是否合法;
<validators>
    <field name="userEmail">
        <field-validator type="email">
            <message>your email is illegal</message>
        </field-validator>
    </field>
</validators>

url URL地址验校器

该验校器用于验校一个URL是否合法;
<validators>
    <field name="userUrl">
        <field-validator type="url">
            <message>your url is illegal</message>
        </field-validator>
    </field>
</validators>

conversion 转换验校器

该验校器用于验校字符在类型转化是否有错误产生,其中“repopulateField”属性用于指定装换失败的表单域是否保留原来的错误输入;
<validators>
    <field name="conversion">
        <field-validator type="age">
            <param name="repopulateField">false</param>
            <message>age conversion fail</message>
        </field-validator>
    </field>
</validators>

基于注解验校

除了以上使用验校文件进行表单域的验校之外,Struts2 还可以直接在Action类中通过注解对私有域进行验校,具体的验校器可以参考: http://blog.youkuaiyun.com/al_assad/article/details/77119305







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值