Struts2 表单验证-validate方法
表单数据验证是项目中必要的工作,例如在用户注册时,需要对注册表单的输入项进行合法性验证。表单数据验证分为客户端验证 和 服务端验证,Struts2提供了两种服务端表单数据验证方式。
- Action中的validate()方法
- 通过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 运行测试
表单什么都不输入就提交,则显示以下效果
热门文章
优秀文章