Struts2提供了基于验证框架的输入校验,在这种校验方式下,所有的输入校验只需要编写简单的配置文件,Struts2的验证框架将会负责进行校验。
register.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<s:form action="register">
<s:textfield name="name" label="姓名"></s:textfield>
<s:password name="pass" label="密码"></s:password>
<s:textfield name="age" label="年龄"></s:textfield>
<s:submit value="注册"></s:submit>
</s:form>
</body>
</html>
上面页面定义了三个表单域,分别对应name,pass和age3个请求参数,假设本应用要求这3个请求参数满足如下规则:
① name不能为空
② pass不能为空
③ age必须在1到150之间
struts.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="demo" extends="struts-default">
<action name="register" class="action.RegisterAction">
<result name="success">/success.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>
</struts>
RegisterAction.java :
public class RegisterAction extends ActionSupport {
private String name;
private String pass;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
RegisterAction-validation.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>姓名不能为空</message>
</field-validator>
</field>
<field name="pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄必须在1到150之间</message>
</field-validator>
</field>
</validators>
此处xml的dtd可以到xwork-core-2.1.6.jar下找到xwork-validator-1.0.2.dtd文件,将文件中的注释里的DOCTYPE拷出来。
success.jsp :
<body>
register success...
</body>
校验文件的命名规则是:Action名-validation.xml。当输入校验失败后,Struts2自动返回名为“input”的Result,因此需要在struts.xml文件中配置名为“input”的Result。
这种通过编写校验文件的方式只做一般了解,不做重点掌握。