Struts2中validate数据校验的两种方法详解附Struts2常用校验器

 更新时间:2016年09月02日 14:21:10   作者:Java.Sheng   我要评论
这篇文章主要介绍了Struts2中validate数据校验的两种方法及Struts2常用校验器,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧

 1.Action中的validate()方法

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

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

Action类:

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>

运行结果(第一次测试正确,第二次测试错误)

这里写图片描述

这里写图片描述
这里写图片描述

2.通过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常用校验器:

这里写图片描述

相关文章

  • Java实现的简单掷骰子游戏示例

    Java实现的简单掷骰子游戏示例

    这篇文章主要介绍了Java实现的简单掷骰子游戏,涉及Java随机数的简单生成、运算与判定相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Spring AOP注解失效的坑及JDK动态代理

    Spring AOP注解失效的坑及JDK动态代理

    这篇文章主要介绍了Spring AOP注解失效的坑及JDK动态代理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • SpringMVC配置拦截器实现登录控制的方法

    SpringMVC配置拦截器实现登录控制的方法

    这篇文章主要介绍了SpringMVC配置拦截器实现登录控制的方法,SpringMVC读取Cookie判断用户是否登录,对每一个action都要进行判断,有兴趣的可以了解一下。
    2017-03-03
  • Java中字符数组和字符串与StringBuilder和字符串转换的讲解

    Java中字符数组和字符串与StringBuilder和字符串转换的讲解

    今天小编就为大家分享一篇关于Java中字符数组和字符串与StringBuilder和字符串转换的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java代理模式详细解析

    Java代理模式详细解析

    这篇文章主要为大家详细介绍了Java代理模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Java之递归求和的两种简单方法(推荐)

    Java之递归求和的两种简单方法(推荐)

    下面小编就为大家带来一篇Java之递归求和的两种简单方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Spring实战之类级别缓存实现与使用方法

    Spring实战之类级别缓存实现与使用方法

    这篇文章主要介绍了Spring实战之类级别缓存实现与使用方法,结合实例形式分析了Spring类级别缓存配置、属性、领域模型等相关操作技巧,需要的朋友可以参考下
    2020-01-01
  • Java正则表达式易错知识点汇总

    Java正则表达式易错知识点汇总

    这篇文章主要总结Java正则表达式易错知识,对易错知识点进行分类整理,帮助大家更好的学习Java正则表达式,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • java累加和校验实现方式16进制(推荐)

    java累加和校验实现方式16进制(推荐)

    下面小编就为大家带来一篇java累加和校验实现方式16进制(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • java实现在pdf模板的指定位置插入图片

    java实现在pdf模板的指定位置插入图片

    这篇文章主要为大家详细介绍了java如何实现在pdf模板的指定位置插入图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10

最新评论