Struts2 表单验证-validate方法

表单数据验证是项目中必要的工作,例如在用户注册时,需要对注册表单的输入项进行合法性验证。表单数据验证分为客户端验证 和 服务端验证,Struts2提供了两种服务端表单数据验证方式。

  1. Action中的validate()方法
  2. 通过XWork校验框架-XML配置

下面主要讲解Action的validate方法完成表单数据验证。Struts2中提供了一个com.opensymphony.xwork2.Validateable接口,此接口只有一个方法:validate()。如果有某个类实现了Validatable接口,Struts2就可以直接调用该类中的validate()方法。ActonSupport类实现Validateable接口

1 设计用户注册表单

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>一点教程-struts2的表单验证</title>
  </head>
  <body>
  <h3>方法验证(代码)验证</h3>
  <%--
  验证需求:
    1) 全部数据不能为空
    2)用户名长度4-20位之间
    3)密码长度6-16位之间
    4)手机格式是合法的
    5)邮箱格式是合法的
  --%>
  <form action="demo1.action" method="post">
  	用户名:<input type="text" name="name"/><br/>
  	密码:<input type="password" name="password"/><br/>
  	手机:<input type="text" name="phone"/><br/>
  	邮箱:<input type="text" name="email"/><br/>
  	<input type="submit" value="注册"/>
  </form>
  </body>
</html>

2 编写validate方法

package com.yiidian.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.yiidian.domain.User;
/**
 * 方法(代码)验证
 * @author 一点教程(yiidian.com)
 */
public class Demo1Action extends ActionSupport implements ModelDriven<User>{
	private User user = new User();
	@Override
	public User getModel() {
		return null;
	}
	
	//覆盖了validate方法,进行方法验证
	@Override
	public void validate() {
		if(user!=null){
			if(user.getName()==null || user.getName().equals("")){
				//添加错误信息
				this.addFieldError("user.error", "用户名不能为空");
			}
			if(user.getPassword()==null || user.getPassword().equals("")){
				//添加错误信息
				this.addFieldError("password.error", "密码不能为空");
			}
			if(user.getPhone()==null || user.getPhone().equals("")){
				//添加错误信息
				this.addFieldError("phone.error", "手机不能为空");
			}
			if(user.getEmail()==null || user.getEmail().equals("")){
				//添加错误信息
				this.addFieldError("email.error", "邮箱不能为空");
			}
		}
		
	}

	@Override
	public String execute() throws Exception {
		System.out.println("用户注册成功啦");
		return SUCCESS;
	}
	
}

3 struts.xml配置Action

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">	
<struts>
	
	<package name="base" extends="struts-default" namespace="/">
		<action name="demo1" class="com.yiidian.action.Demo1Action">
			<result>/succ.jsp</result>
			<!-- 必须配置input视图,input是Struts2默认的失败提示页面 -->
			<result name="input">/index.jsp</result>
		</action>
	</package>	
</struts>

注意:必须配置input视图,因为表单验证失败后,Struts2自动跳转到input视图的地址。

4 在JSP显示错误信息

<s:fielderror/>

5 运行测试

表单什么都不输入就提交,则显示以下效果

 

源码下载:https://pan.baidu.com/s/1fmPiwa3r9y-U-aLqniim7Q

热门文章

优秀文章