struts2中使用validate校验数据

第一种方法 Action中的validate()方法

Struts2提供了一个Validateable接口,这个接口中只存在validate()方法,实现这个接口的类可直接被Struts2调用,ActionSupport类就实现了Vadidateable接口,但他的validate()方法是一个空方法,需要我们来重写。

validate()方法会在execute()方法执行前执行,仅当数据校验正确,才执行execute()方法, 如错误则将错误添加到fieldErrors域中,如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑需要不同的校验规则,这种情况下validate()会对所有处理逻辑使用相同的校验规则,为了实现不同的校验逻辑,需要通过validateX()方法,其中X表示处理逻辑的方法名。

public class LoginAction extends ActionSupport{
    private static final long serialVersionUID = 1L;

    private String userName;
    private String userPassword;


    public String execute(){

        System.out.println("execute");
        return SUCCESS;
    }

    public String login(){
        System.out.println("login");
        return SUCCESS;
    }

    public void validate(){
        System.out.println("validata");
    }

    public void validateLogin(){
        System.out.println("validatelogin");
        if(!(userName.equals("sbw") && userPassword.equals("123"))){
            addFieldError("error","wrong info");
        }
    }
    public String getUserName() {
        return userName;
    }


    public void setUserName(String userName) {
        this.userName = userName;
    }


    public String getUserPassword() {
        return userPassword;
    }


    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }


}


struts.xml

<package name="main" extends="struts-default">
        <global-results>
            <result name="login">/login.jsp</result>
        </global-results>

        <action name="loginPerson" class="com.sbw.test.action.LoginAction" method="login">
            <result name="success">/success.jsp</result>
            <result name="input">/validateLogin.jsp</result>
        </action>
    </package>
success.jsp

<body>
    登录成功 <s:property value="account"/>
  </body>

validateLogin.jsp

 <body>
    <s:fielderror/>
  </body>

执行流程:login.jsp-->struts.xml-->action类中的validateLogin()方法-->action类中的validate()方法-->execute()方法

第二种方法 通过XWork校验框架

使用validate方法校验时,如果Web应用中存在大量Action就需要多次重写validate方法,因此可以使用XWork的validator框架来对Struts2进行数据校验,减少代码量。

在com.action包下创建验证文件LoginAction-validation.xml,注:当一个Action中有多个业务处理方法是,命名规则为:actionName-methodName-validation.xml,其中actionName为Action类名,methodName为Action中某个业务处理方法的方法名,并且文件的搜索顺序与方式一种validate()和validateX()一样。

Login-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
    <field name="userName">
        <field-validator type="requiredstring">
            <message>the name should not null</message>
        </field-validator>
    </field>

    <field name="userPassword">
        <field-validator type="requiredstring">
            <message>the password should not null</message>
        </field-validator>
    </field>
</validators>


上述字段校验方式为字段校验方式,还有一种方式是非字段校验方式,如下: 
Login-validation.xml:

<validators>
    <validator type="requiredstring">
        <param name="fieldName">userName</param>
        <message>name should not null</message>
    </validator>

    <validator type="requiredstring">
        <param name="fieldName">userPassword</param>
        <message>password should not null</message>
    </validator>
</validators>

两种方式结果一样。

struts2表单验证里field-validator type值一共可以取哪些?


int 整数;
double 实数;
date 日期;
expression 两数的关系比较;
email Email地址;
url
visitor
conversion
regex 正则表达式验证;
required 是否为空;
requiredstring 必须字符;
stringlength 输入字符长度限制;

举例:
url web地址 visitor 访问 conversion 转换
<validators> 
<field name="user.userName"> 
<!-- 验证字符串不能为空 --> 
<field-validator type="requiredstring"> 
<!-- 去空格 --> 
<param name="trim">true</param> 
<!-- 错误提示信息 --> 
<message>用户名不能为空</message> 
</field-validator> 

<!-- 验证字符串长度 --> 
<field-validator type="stringlength"> 
<param name="minLength">2</param> 
<param name="maxLength">20</param> 
<message>用户名长度应在2到18个字符间</message> 
</field-validator> 
</field> 

<field name="user.password"> 
<field-validator type="requiredstring"> 
<param name="trim">true</param> 
<message>密码不能为空</message> 
</field-validator> 

<field-validator type="stringlength"> 
<param name="minLength">6</param> 
<param name="maxLength">18</param> 
<message>密码长度应在6到18个字符之间</message> 
</field-validator> 
</field> 

<field name="user.age"> 
<field-validator type="int"> 
<param name="min">1</param> 
<param name="max">150</param> 
<message>年龄应在1到150之间</message> 
</field-validator> 
</field> 
<!-- 验证字符串为日期类型 --> 
<field name="user.birthday"> 
<field-validator type="date"> 
<param name="min">1900-01-01</param> 
<param name="max">2008-10-16</param> 
<message>出生日期应在1900-01-01到2008-10-16</message> 
</field-validator> 
</field> 
</validators>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
探索全栈前端技术的魅力:HTML+CSS+JS+JQ+Bootstrap网站源码深度解析 在这个数字化时代,构建一个既美观又功能强大的网站成为了许多开发者和企业追逐的目标。本份资源精心汇集了一套完整网站源码,融合了HTML的骨架搭建、CSS的视觉美化、JavaScript的交互逻辑、jQuery的高效操作以及Bootstrap的响应式设计,全方位揭秘了现代网页开发的精髓。 HTML,作为网页的基础,它构建了信息的框架;CSS则赋予网页生动的外观,让设计创意跃然屏上;JavaScript的加入,使网站拥有了灵动的交互体验;jQuery,作为JavaScript的强力辅助,简化了DOM操作与事件处理,让编码更为高效;而Bootstrap的融入,则确保了网站在不同设备上的完美呈现,响应式设计让访问无界限。 通过这份源码,你将: 学习如何高效组织HTML结构,提升页面加载速度与SEO友好度; 掌握CSS高级技巧,如Flexbox与Grid布局,打造适应各种屏幕的视觉盛宴; 理解JavaScript核心概念,动手实现动画、表单验证等动态效果; 利用jQuery插件快速增强用户体验,实现滑动效果、Ajax请求等; 深入Bootstrap框架,掌握移动优先的开发策略,响应式设计信手拈来。 无论是前端开发新手渴望系统学习,还是资深开发者寻求灵感与实用技巧,这份资源都是不可多得的宝藏。立即深入了解,开启你的全栈前端探索之旅,让每一个网页都成为技术与艺术的完美融合!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值