欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-13 19:32:45
 1.action中的validate()方法 struts2提供了一个validateable接口,这个接口中只存在validate()方法,实现这个接口的类...

 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>

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

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

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

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>

再次运行结果为:

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

上述字段校验方式为字段校验方式,还有一种方式是非字段校验方式,如下:

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常用校验器:

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