◆使用客户端校验
校验规则文件的根元素是<validators…/>,<validators…/>元素可包含多个<filed…/>或<validator…/>元素,他们都用于配置校验规则,区别是:<filed-validator…/>是字段校验器的配置风格,而<validator…/>是非字段校验器的配置风格。
Struts2中每个Action中都有一个校验文件,文件名遵守如下规则:
<Action名字>-validation.xml,并且该文件必须放在与Action同一个目录下
Struts2使用客户端校验只需改变两个地方:
●将输入页面的表单元素改为使用Struts2标签来生成表单
●为该<s:form …/>元素增加validate=”true”属性
一个注册界面的实现:
图1 工程结构
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>请输入你的注册信息</title>
</head>
<body>
<h1>请输入你的注册信息</h1>
<s:form action="registerAction" method="post" validate="true">
<s:textfield label="用户名" name="name" size="20"/>
<s:password label="密码" name="pass" size="20"/>
<s:textfield label="年龄" name="age" size="20"/>
<s:textfield label="生日" name="birth" size="20"/>
<s:submit value="确认"/>
<!-- jsp代码 -->
<!-- 用户名:<input type="text" name="name"><br>
密 码:<input type="password" name="pass"><br>
年 龄:<input type="text" name="age"><br>
生 日:<input type="text" name="birth"><p>
<input type="submit" value="注册"> -->
</s:form>
</body>
</html>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>register</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
</struts>
RegisterAction.java
package com.sff.project;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class RegisterAction extends ActionSupport {
private String name;
private String pass;
private int age;
private Date birth;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the pass
*/
public String getPass() {
return pass;
}
/**
* @param pass the pass to set
*/
public void setPass(String pass) {
this.pass = pass;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the birth
*/
public Date getBirth() {
return birth;
}
/**
* @param birth the birth to set
*/
public void setBirth(Date birth) {
this.birth = birth;
}
public String execute(){
return SUCCESS;
}
}
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-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>用户名只能是字母和数字,且长度必须在4到25之间</message>
</field-validator>
</field>
<field name="pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*必须输入密码</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{2,25})]]></param>
<message>密码只能是字母和数字,且长度必须在4到25之间</message>
</field-validator>
</field>
<!-- 指定age的范围 -->
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年纪必须在1到150之间</message>
</field-validator>
</field>
<!-- 指定birth的范围 -->
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-01-01</param>
<message>年纪必须在${min}到$(max)之间</message>
</field-validator>
</field>
</validators>
运行结果:
图2 运行结果
注意检查浏览器的地址栏,该页面停留在原来的页面上并未提交到对应的Action中,这就表明上面的数据校验过程是客户端完成的。
◆ 非字段校验器配置风格
注意格式问题:
<?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>
<!-- 非字段校验器风格 -->
<!-- 配置制定必填字符串的校验器 -->
<validator type="requiredstring">
<!-- 使用校验器校验name属性 -->
<param name="fieldName">name</param>
<param name="trim">true</param>
<!-- 指定校验失败后输出name.required对应的国际化信息 -->
<message>${getText("name.requried")}</message>
</validator>
<!-- 配置指定正则表达式的校验器 -->
<validator type="regex">
<param name="fieldName">name</param>
<param name="trim">true</param>
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>${getText("name.regex")}</message>
</validator>
<validator type="requiredstring">
<param name="fieldName">pass</param>
<param name="trim">true</param>
<message>${getText("pass.required")}</message>
</validator>
<validator type="regex">
<param name="fieldName">pass</param>
<param name="trim">true</param>
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>${getText("pass.regex})"}</message>
</validator>
<validator type="int">
<param name="fieldName">age</param>
<param name="min">1</param>
<param name="max">150</param>
<message>${getText("age.range")}</message>
</validator>
<validator type="date">
<param name="fieldName">birth</param>
<param name="min">1900-1-1</param>
<param name="max">2050-12-31</param>
<message>${getText("birth.range")}</message>
</validator>
</validators>
◆ 短路校验器
采用短路校验器只需要在<validator…/>或<field-validator…/>中增加short-circuit=“true”即可。
分享到:
相关推荐
(2):对密码校验的规则是用户不能为空,且只能是数字,长度为8到20之间。 (3):年龄的校验规则是必须是整数,且在1到120之间。 (4):生日的校验规则是必须在1950-1-1到1990-1-1之间。 (5):所有提示信息均要...
6.7.2 Struts 2中常用的表达式语言特性 131 6.7.3 表达式语言的高级特性 135 6.8 小结 137 第7章 UI组件标签 139 7.1 为什么需要UI组件标签 139 7.2 标签、模板和主题 144 7.2.1 标签 146 7.2.2 模板 146 7.2.3 ...
在struts2里,完成登录页面,使用框架进行数据校验,用户名必填,密码必填且长度大于6。
(2) 用户注册,需要通过Struts2字段校验判断用户注册页面中的用户名、密码、年龄、出生日期、邮箱等是否符合校验规则,并对自定义校验器要求密码必须包含数字、字母以及两个以上的特殊字符(!@#$%^&*)。 (3) 对用户...
<br> 国际化 在validator-rules.xml 文件中form的验证规则可以组织为FormSet。FormSet 有与java.util.Locale 类相应的属性:如语言, 国家以及变量型属性,如果他们未定义,FormSet 将把它设置为默认值。一...
2.3.4 struts 2中集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的中文本地化 85 2.4.2 struts 2应用的国际化 87 2.4.3 struts 2国际化语言的动态切换 89 2.5 struts 2的校验框架 90 2.5.1 在...
struts中的验证框架验证:Validator框架采用基于xml的配置文件来配置验证规则
包括了required,integer ,mask,email,intRange,validwehnd,date等常用验证规则。因为用到的是DispatchAction,还得注意一下Struts-Config配置文件。Validator与DispatchAction配合并太好,主要是因为验证失败后不能...
1.2.4 struts.xml 配置文件......................................................................................7 2 Action 研究.............................................................................
commons-validator.jar 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器(校验方法)和校验规则 struts2-spring-plugin-2.0.11.2.jar struts2的spring插件 struts2-core-2.0.11.2jar struts2 2.0.11.2的...
它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用...
emis02(Struts2+Spring+EJB).zip //10.客户端——Struts2+Spring+EJB架构实现 emis03(EJB+MySQL+JTA).zip //11.事务——为服务端增加JTA事务管理功能 emis04(EJB+MySQL+JTA+JAAS).zip //12.安全——为服务端增加...
Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...
emis02(Struts2+Spring+EJB).zip //10.客户端——Struts2+Spring+EJB架构实现 emis03(EJB+MySQL+JTA).zip //11.事务——为服务端增加JTA事务管理功能 emis04(EJB+MySQL+JTA+JAAS).zip //12.安全——为服务端增加...
emis02(Struts2+Spring+EJB).zip //10.客户端——Struts2+Spring+EJB架构实现 emis03(EJB+MySQL+JTA).zip //11.事务——为服务端增加JTA事务管理功能 emis04(EJB+MySQL+JTA+JAAS).zip //12.安全——为服务端增加...
emis02(Struts2+Spring+EJB).zip //10.客户端——Struts2+Spring+EJB架构实现 emis03(EJB+MySQL+JTA).zip //11.事务——为服务端增加JTA事务管理功能 emis04(EJB+MySQL+JTA+JAAS).zip //12.安全——为服务端增加...
本书系统全面地介绍了Java中的各项主流技术,以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、...
SVT(Struts Validation Toolkit)是Struts的验证框架。 您可以用 Java 编写简单的验证代码。 这将允许您编写更灵活的规则,而不是编写validation.xml 文件。
2.28.2 Struts2校验框架应用 71 2.28.2.1 校验配置文件 71 2.28.2.2 角色Insert页面示例 71 2.28.2.3 用户Query页面示例 73 2.28.2.4 多行输入域校验 75 2.29 多语言管理 77 2.29.1 定义输入域的name属性和资源文件 ...
用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate()验证后选择将...