Struts2的验证框架,可在执行action之前,帮助应用程序运行规则执行验证。
以下介绍给Struts2项目添加验证的两种方法。
一、实现action中validate()方法
1.首先,创建一个action类,实现其validate()方法实现验证所需的逻辑:
public class EmployeeAction extends ActionSupport {
private String name;
private int age;
@Override
public String execute() throws Exception {
return SUCCESS;
}
@Override
public void validate() {
if (name == null || name.trim().equals("")) {
addFieldError("name", "The name is required");
}
if (age < 28 || age > 65) {
addFieldError("age", "Age must be in 28 to 65");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.配置struts.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="helloworld" extends="struts-default">
<action name="empinfo"
class="EmployeeAction">
<result name="success">
/success.jsp
</result>
<result name="input">
/index.jsp
</result>
</action>
</package>
</struts>
3.jsp部分:
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Employee Form</title>
</head>
<body>
<s:form action="empinfo" method="post">
<s:textfield name="name" label="Name" size="20" />
<s:textfield name="age" label="Age" size="20" />
<s:submit name="submit" label="Submit" align="center" />
</s:form>
</body>
</html>
success.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>File Upload Success</title>
</head>
<body>
Employee Information is captured successfully.
</body>
</html>
4.运行结果:当我们两个输入框都不输入东西后提交,结果如下。
(1)当用户提交请求后,Struts2会自动执行validate方法,若验证不通过,可以调用addFieldError方法,为相应字段添加错误信息,同时Struts2会返回input结果,此后execute方法将不会被调用,而是根据struts.xml文件显示index.jsp文件。
(2)由于我们在index.jsp中使用Struts2的form标签,因此Struts2会自动在form字段上方添加错误信息。
(3)addFieldError方法接受两个参数,第一个是出错时应用的form字段名称,第二个是form字段上方显示的错误信息。