struts2 实现输入校验之validate方法

在Struts2中,有很多方式可以实现输入校验,有手工实现输入校验,基于验证框架的输入校验等方法。

这次我主要介绍通过重写validate方法校验。

关于struts2的环境搭建,我就不说了。

直接打开我们的Action类:

package com.struts.login.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
	public String username;
	public String userpsd;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUserpsd() {
		return userpsd;
	}
	public void setUserpsd(String userpsd) {
		this.userpsd = userpsd;
	}
	public String execute() throws Exception {
		System.out.println(username + " " + userpsd);
		if ("admin".equals(username) && "admin".equals(userpsd)) {
			System.out.println("1");
			return SUCCESS;
		}
		else {
			addFieldError("username", "用户名或密码错误!");
			System.out.println("2");
			return LOGIN;
		}
	}
	public void validate() {
		if (null == username || "".equals(username)) {
			addFieldError("username", "用户名不能为空");
		}
		else if (null == userpsd || "".equals(userpsd)) {
			addFieldError("userpsd", "密码不能为空");
		}
	}
}

注意,这里面多了一个validate方法,其作用就是对视图页面中传过来的数据进行验证,验证的规则就是方法中的if条件,当某个数据不合规则时,通过addFieldError,将错误信息保存起来,而Struts2就会跳转到input视图(即struts.xml文件中配置了input类型的result)。视图页面就会将错误信息显示到视图页面中。

<pre name="code" class="html"><pre name="code" class="html"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title>注册</title>
</head>

<body>
	<div align="center">
		<h1>注册</h1>
		<s:fielderror></s:fielderror><!-- 显示错误信息 -->
		<s:form action="Login" method="post" namespace="/action">
			<s:textfield name="username" size="20" label="用户名" />
			<s:password name="userpsd" size="20" label="密码" />
			<s:submit value="登录" />
		</s:form>
	</div>
</body>
</html>

 
 
在上面视图页面中,我们可以通过<s:fielderror></s:fielderror>标记显示addFieldError方法封装的错误信息,当然,也可以不写。 

最后,说下几个问题:

①使用validate()验证失败时(即数据不符合规则),Struts2会将请求转发到名为input的result所对应的视图页面。

②错误信息可以使用<s:fielderror></s:fielderror>标记来显示


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值