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

网友投稿 191 2023-07-07


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

1.Action中的validate()方法

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

validate()方法会在execute()方法执行前执行,仅当数据校验正确,才执行execute()方法, 如错误则将错误添加到fieldErrors域中,如果定义的Action中存在多个逻辑处理方法http://,且不同的处理逻辑http://需要不同的校验规则,这种情况下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

/login.jsp

/success.jsp

/validateLogin.jsp

success.jsp

登录成功

validateLogin.jsp

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

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

"-//Apache Struts//XWork Validator 1.0.2//EN"

"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

the name should not null

the password should not null

再次运行结果为:

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

Login-validation.xml:

userName

name should not null

userPassword

password should not null

结果与字段校验方式一样

附:Struts2常用校验器:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用CORS实现JavaWeb跨域请求问题的方法
下一篇:深入谈谈java的枚举(enum)类型
相关文章

 发表评论

暂时没有评论,来抢沙发吧~