`
gylixyu
  • 浏览: 6790 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

struts2中的校验规则文件

阅读更多
◆使用客户端校验
校验规则文件的根元素是<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>
密&nbsp;&nbsp;码:<input type="password" name="pass"><br>
年&nbsp;&nbsp;龄:<input type="text" name="age"><br>
生&nbsp;&nbsp;日:<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”即可。
0
1
分享到:
评论

相关推荐

    Struts 2校验框架的应用

    (2):对密码校验的规则是用户不能为空,且只能是数字,长度为8到20之间。 (3):年龄的校验规则是必须是整数,且在1到120之间。 (4):生日的校验规则是必须在1950-1-1到1990-1-1之间。 (5):所有提示信息均要...

    Struts2 in action中文版

    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

    在struts2里,完成登录页面,使用框架进行数据校验,用户名必填,密码必填且长度大于6。

    图书管理系统-struts2

    (2) 用户注册,需要通过Struts2字段校验判断用户注册页面中的用户名、密码、年龄、出生日期、邮箱等是否符合校验规则,并对自定义校验器要求密码必须包含数字、字母以及两个以上的特殊字符(!@#$%^&*)。 (3) 对用户...

    Struts Validator验证器使用指南

    &lt;br&gt; 国际化 在validator-rules.xml 文件中form的验证规则可以组织为FormSet。FormSet 有与java.util.Locale 类相应的属性:如语言, 国家以及变量型属性,如果他们未定义,FormSet 将把它设置为默认值。一...

    低清版 大型门户网站是这样炼成的.pdf

    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 在...

    validator-rules.xml

    struts中的验证框架验证:Validator框架采用基于xml的配置文件来配置验证规则

    Struts Validator 例子

    包括了required,integer ,mask,email,intRange,validwehnd,date等常用验证规则。因为用到的是DispatchAction,还得注意一下Struts-Config配置文件。Validator与DispatchAction配合并太好,主要是因为验证失败后不能...

    AnyFo - Struts 2_1爆胎易筋丸.pdf

    1.2.4 struts.xml 配置文件......................................................................................7 2 Action 研究.............................................................................

    MyEclipse_9创建SSH2开发环境必须的独立包

    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的...

    SSH配置文件所需要的dtd.

    它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用...

    java高手真经 高级编程卷 卷2(4卷)

    emis02(Struts2+Spring+EJB).zip //10.客户端——Struts2+Spring+EJB架构实现 emis03(EJB+MySQL+JTA).zip //11.事务——为服务端增加JTA事务管理功能 emis04(EJB+MySQL+JTA+JAAS).zip //12.安全——为服务端增加...

    达内java培训目录

    Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...

    java高手真经 高级编程卷 卷4(4卷)

    emis02(Struts2+Spring+EJB).zip //10.客户端——Struts2+Spring+EJB架构实现 emis03(EJB+MySQL+JTA).zip //11.事务——为服务端增加JTA事务管理功能 emis04(EJB+MySQL+JTA+JAAS).zip //12.安全——为服务端增加...

    java高手真经 高级编程卷 光盘内容 卷1(4卷)

    emis02(Struts2+Spring+EJB).zip //10.客户端——Struts2+Spring+EJB架构实现 emis03(EJB+MySQL+JTA).zip //11.事务——为服务端增加JTA事务管理功能 emis04(EJB+MySQL+JTA+JAAS).zip //12.安全——为服务端增加...

    java高手真经 高级编程卷 卷3(4卷)

    emis02(Struts2+Spring+EJB).zip //10.客户端——Struts2+Spring+EJB架构实现 emis03(EJB+MySQL+JTA).zip //11.事务——为服务端增加JTA事务管理功能 emis04(EJB+MySQL+JTA+JAAS).zip //12.安全——为服务端增加...

    JAVA程序开发大全---上半部分

    本书系统全面地介绍了Java中的各项主流技术,以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、...

    Struts Validation Toolkit-开源

    SVT(Struts Validation Toolkit)是Struts的验证框架。 您可以用 Java 编写简单的验证代码。 这将允许您编写更灵活的规则,而不是编写validation.xml 文件。

    ARCH4系统开发指南

    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属性和资源文件 ...

    Spring面试题

    用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate()验证后选择将...

Global site tag (gtag.js) - Google Analytics