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

作者:Java.Sheng 时间:2022-06-03 11:08:13 

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

来源:http://blog.csdn.net/woaigaolaoshi/article/details/50961505

标签:struts2,validate,数据校验
0
投稿

猜你喜欢

  • 详解maven中profiles使用实现

    2022-11-13 23:14:24
  • Struts2相关的面试题整理分享

    2022-04-06 08:02:20
  • C# 读写XML(代码分享)

    2022-11-05 15:28:10
  • java图形用户界面实现菜单功能

    2023-11-23 11:50:58
  • SWT(JFace)体验之打开多个Form

    2021-11-29 03:19:15
  • Java多线程 Producer and Consumer设计模式

    2022-08-30 07:13:24
  • Spring Security登录表单配置示例详解

    2023-10-12 09:03:55
  • Spring整合Quartz实现定时任务调度的方法

    2023-07-07 00:55:55
  • C#通过创建Windows服务启动程序的方法详解

    2022-09-16 15:32:49
  • JAVA设计模式之备忘录模式原理与用法详解

    2023-08-24 13:23:37
  • SpringBoot整合Activiti工作流框架的使用

    2022-03-02 12:32:44
  • Java设计模式七大原则之里氏替换原则详解

    2022-05-22 13:41:10
  • SpringBoot实现PPT格式文件上传并在线预览功能

    2023-07-22 14:44:56
  • C#获取真实IP地址实现方法

    2022-01-05 11:35:49
  • 浅谈Java线程Thread之interrupt中断解析

    2023-07-19 09:25:11
  • 深入多线程之:用Wait与Pulse模拟一些同步构造的应用详解

    2021-07-09 06:14:19
  • Android获取手机的版本号等信息的代码

    2021-09-21 06:00:26
  • Java Swing中JList选择事件监听器ListSelectionListener用法示例

    2021-06-21 22:52:01
  • Spring事务传播中嵌套调用实现方法详细介绍

    2021-08-31 22:34:24
  • 基于ElasticSearch Analyzer的使用规则详解

    2023-09-28 14:41:04
  • asp之家 软件编程 m.aspxhome.com