zoukankan      html  css  js  c++  java
  • Struts的几种校验方式

    如果要使用Struts2的验证框架,首先要开启这个拦截器。在文档中是这样介绍的: 
    默认的拦截器堆栈defaultStack已经在开启验证。在创建自己的interceptor-stack时一定要包括validation和workflow拦截器。

    Xml代码 
    <interceptor-stack name="defaultStack">
       ...
       <interceptor-ref name="validation">
          <param name="excludeMethods">input,back,cancel,browse</param>
       </interceptor-ref>
       <interceptor-ref name="workflow">
          <param name="excludeMethods">input,back,cancel,browse</param>
       </interceptor-ref>
    </interceptor-stack>

    添加此属性validate="true"之后,服务器返回此页面的时候就会生成一个js文件进行校验,那么这里就是客户端校验了,但是客户端支持的校验器只有几种。

    <%@ page contentType="text/html; charset=GBK" language="java" %>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <html>
    <head>
    <title>register</title>
    </head>
    <body>
    <s:form action="login" validate="true">
    <s:textfield name="username" label="用户名"/>
    <s:textfield name="pass" label="密码"/>
    <s:textfield name="repass" label="确认密码"/>
    <s:textfield name="age" label="年龄"/>
    <s:textfield name="high" label="身高"/>
    <s:textfield name="email" label="邮箱"/>
    <s:textfield name="website" label="个人主页"/>
    <s:textfield name="birthday" label="生日"/>
    <s:submit/>
    </s:form>
    </body>
    </html>

    Xml代码

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC
            "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
            "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
    
    <validators>
    <!-- required必填校验器 -->
        <field name="repass">
            <field-validator type="required">
                <!-- 校验前去掉name属性的前后空格 -->
                <param name="trim">true</param>
                <message>必须再填一次密码!</message>
            </field-validator>
        </field>
    <!-- requiredstring必填字串校验器和stringlength长度校验器 -->
        <field name="username">
            <field-validator type="requiredstring">
                <!-- 校验前去掉name属性的前后空格 -->
                <param name="trim">true</param>
                <message>%{getText("validator.error.required", "姓名")}</message>
            </field-validator>
            <field-validator type="stringlength">
                <param name="minLength">0</param>
                <param name="maxLength">15</param>
                <message>长度必须在0和15之间</message>
            </field-validator>
        </field>
    <!-- regex正则表达式校验器 -->
        <field name="pwd">
            <field-validator type="requiredstring" short-circuit="true">
                <param name="trim">true</param>
                <message>请输入密码</message>
            </field-validator>
            <field-validator type="regex">
                <param name="expression"><![CDATA[(\w{4,25})]]></param>
                <message>您输入的密码只能是字母和数组,且长度必须在4到25之间</message>
            </field-validator>
        </field>
    <!-- int整数校验器 -->
        <field name="age">
            <field-validator type="int">
                <param name="min">1</param>
                <param name="max">100</param>
                <message>年龄必须是${min}到${max}之间的整数</message>
            </field-validator>
        </field>
    <!-- double双精度浮点校验器 -->
        <field name="high">
            <field-validator type="double">
                <param name="min">1.0</param>
                <param name="max">2.3</param>
                <message>身高必须是${min}到${max}之间的小数</message>
            </field-validator>
        </field>
    <!-- date日期校验器 -->
        <field name="birthday">
            <field-validator type="date">
                <param name="min">1900-01-01</param>
                <param name="max">2050-01-01</param>
                <message>${getText("birthday.range")}</message>
            </field-validator>
        </field>
    <!-- email邮件地址校验器 -->
        <field name="email">
            <field-validator type="email">
                <message>邮箱格式不对</message>
            </field-validator>
        </field>
    <!-- url网址校验器 -->
        <field name="website">
            <field-validator type="url">
                <message>请填写正确的网址</message>
            </field-validator>
        </field>
    </validators>

    但是在生成出的js文件中并没有对date类型的字段校验。 
    可见Struts2中并不是所有的服务器端校验都可以转换成客户端校验。客户端校验仅仅支持如下几种校验器:
     
    required validator 必填校验器 
    requiredstring validator 必填字符串校验器 
    stringlength validator 字符串长度校验器 
    regex validator 表达式校验器 
    email validator 邮件校验器 
    url validator 网址校验器 
    int validator 整数校验器 
    double validator 双精度数校验器 

    struts2.3.4内置的13种校验器:

    xml代码:

        conversion validator
        date validator
        double validator
        email validator
        expression validator
        fieldexpression validator
        int validator
        regex validator
        required validator
        requiredstring validator
        stringlength validator
        url validator
        visitor validator
  • 相关阅读:
    FFMPEG音视频基础问题和被面试问到的东西
    OpenGL学习
    FFMPEG起航之旅
    SurfaceView、TextureView对比和学习
    对文件拷贝、删除操作、对时间的计算以及转化
    音视频开发
    企业级Android应用架构设计与开发
    屏幕分辨率的适配&&开发文档的介绍
    设计模式的学习
    自定义Dialog的模版
  • 原文地址:https://www.cnblogs.com/90zyh/p/2996586.html
Copyright © 2011-2022 走看看