Struts2中validate数据校验的两种方法详解附Struts2常用校验器_Java教程-查字典教程网
Struts2中validate数据校验的两种方法详解附Struts2常用校验器
Struts2中validate数据校验的两种方法详解附Struts2常用校验器
发布时间:2016-12-28 来源:查字典编辑
摘要: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" 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

<"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学习
    编程开发子分类