- 浏览: 25722 次
- 性别:
- 来自: 厦门
最新评论
除了Form Bean中的validate()方法,Struts还提供Validator插件进行数据校验,Validator插件能在Jsp页面里面生成JavaScript脚本,利用定制的JavaScript脚本在客户端浏览器进行数据校验。
1.支持自动校验 的ValidatorForm
支持Validator校验的Form Bean必须继承Struts的ValidatorForm。本例使用Validator校验Form Bean的非空字符串、整型变量以及电子邮件。
代码1:ValidateTestForm.java
package com.strust1.test.actionFrom; import org.apache.struts.validator.ValidatorForm; public class ValidatorTestForm extends ValidatorForm { private int age; private String name; private String email; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
2.Validate规则配置
Validator插件使用配置式数据校验,所有的校验规则都配置在XML文件中。基本上所有的常用校验都能通过配置实现。
代码2:validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"> <form-validation> <formset> <form name="validatorTestForm"> <field property="name" depends="required"><!--名字非空--> <msg name="required" key="validatorTest.error.nameRequired"/> </field> <field property="age" depends="required, integer, intRange"> <arg position="0" name="intRange" key="${var:min}" resource="false"/> <arg position="1" name="intRange" key="${var:max}" resource="false"/> <var> <var-name>min</var-name> <var-value>0</var-value> </var> <var> <var-name>max</var-name> <var-value>100</var-value> </var> <msg name="required" key="validatorTest.error.ageRequired"/> <msg name="integer" key="validatorTest.error.ageinteger"/> <msg name="intRange" key="validatorTest.error.ageintRange"/> </field> <field property="email" depends="required, email"> <msg name="email" key="validatorTest.error.emailformat"/> <msg name="required" key="validatortest.error.emailrequired"/> </field> </form> </formset> </form-validation>
被校验的Form表单名称为validateTestForm。配置校验了3个域:name、age、email。其中name的校验规则为requried(表示该输入是必需的)。age的校验规则为required、integer(表示该输入必须为整型)、range(表示该输入值在特定的区间内),email的校验规则为required、email(表示该输入必须符合电子邮件格式)
提示:Struts1.x提供配置式数据验证,并预先封装好了常用的数据校验器,例如字符串、数字、电子邮件等,也可以自定义数据校验器。
3、错误信息配置
如果检验失败,会显示<msg>配置的错误信息。错误信息配置在Struts的资源文件中,key为资源的索引。资源文件内容如下:
validatorTest.error.nameRequired=\u540D\u5B57\u5FC5\u586B validatortest.error.emailrequired=email\u5FC5\u987B\u586B\u5199 validatorTest.error.ageRequired=\u5E74\u9F84\u5FC5\u586B validatorTest.error.ageinteger=\u5E74\u9F84\u5FC5\u987B\u662F\u6574\u6570 validatorTest.error.ageintRange=\u5E74\u9F84\u5FC5\u987B\u57280\u5230100\u4E4B\u95F4 validatorTest.error.emailformat=email\u683C\u5F0F\u4E0D\u6B63\u786E
这是编码过的。
4.配置到Struts-config.xml中
校验规则配置完成后,还需要连同校验规则库(也就是validator-rules.xml文件,定义了常用的校验实现代码,位于/WEB-INF下)配置到struts-config.xml中,配置为plugin的形式,代码如下
代码3:struts-config.xml
<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="validatorTestForm" type="com.strust1.test.actionFrom.ValidatorTestForm"> </form-bean> </form-beans> <action-mappings> <action path="/validatorTest" type="com.strust1.test.action.ValidatorAction" name="validatorTestForm" > </action> </action-mappings> <message-resources parameter="com.strust1.test.ApplicationResources"></message-resources> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/> <set-property property="stopOnFirstError" value="false"/> </plug-in> </struts-config>
第一个参数pathnames为校验规则库文件、校验规则配置文件的路劲。第二个参数为如果前面校验失败是否停止后面的校验。
5.配置客户端JavaScript校验
配置完后,就可以在jsp中引用校验了,jsp中必须使用<html:javaScript/>标签。Struts会在该标签处生成JavaScript校验代码,例如:
代码5:validaeTest.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'validateTest.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <html:form action="/validatorTest" onsubmit="return validateValidatorTestForm(this)"> 姓名:<html:text property="name"></html:text><html:errors property="name"/><br/> 年龄:<html:text property="age"></html:text><html:errors property="age"/> 电子邮件:<html:text property="email"></html:text><html:errors property="email"/> <html:submit value="提交"></html:submit> <html:javascript formName="validatorTestForm"/> </html:form> </body> </html>
<html:javaScript>标签的formName与validation.xml中配置的form的name属性遥相呼应。Jsp表单也要使用onsubmit事件。注意代码consubmit="return validateValidatorTestForm(this);"中函数的名称也要用到了form name。
发表评论
-
struts1.x和2.x的线程安全
2012-02-15 15:18 849线程安全是每个多线程 ... -
Struts2和1的异同点
2012-02-06 16:06 695不同点: FormBean被Action属性取代 Acti ... -
Struts1和Struts2的区别
2012-02-06 11:04 1267在Web.xml中配置分发器。Struts1使用ActionS ... -
struts1.2上传文件
2012-02-02 15:29 958struts提供了<html:file>标签,集成 ... -
getGeneratedKeys()使用情况
2011-12-31 16:31 2049getGeneratedKeys()只能在sqlserver或 ... -
struts1需要注意的一些问题
2011-12-30 16:42 9111.struts的控制器:org.apache.strut ... -
struts 使用POJO应注意的一点
2011-12-28 13:40 862对于提交数据比较多的表单,为了避免大量地在FormBean里面 ... -
Struts页面时间格式
2011-12-28 10:20 1127当jsp页面有时间项的时候,除了传递正确格式的时间项外,即传递 ... -
Struts的国际资源配置
2011-12-26 20:28 574概述 类MessageResources可以使开发者方便地支 ... -
ActionResources_zh_CN.properties Not Found.
2011-12-26 20:26 790控制台报警告:2009-06-30 16:08:02,76 ...
相关推荐
数据来源:中国劳动统计NJ-2023版
数据来源:中国人口与就业统计NJ-2023版
Smart继电器编程器操作手册
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
数据来源:中国人口与就业统计NJ-2023版
数据来源:中国人口与就业统计NJ-2023版
基于matlab实现的图像几何校正的程序,根据靶图将tiger图像从鱼眼形变恢复.rar
毕业论文(设计)—旅游资源管理系统设计与实现论文.doc
数据来源:中国劳动统计NJ-2023版
数据来源:中国电力统计NJ-2021版
引入dynamic-datasource-spring-boot-starter。 spring-boot 1.5.x 2.x.x <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>${version}</version> </dependency> spring-boot3及以上 <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot3-starter</artifactId> <version>${version}</version> </dependency> 配置数据源。 spring: datasource: dynamic: enabled: true #启用动态数据源,默认true
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于HarmonyOS 4开发的一款新闻类的鸿蒙APP源代码
基于matlab实现遗传算法无功优化,基于掌纹识别的在线身份验证 识别算法本科毕设,是本科毕设的题目。.rar
【毕业设计】基于C和Access的图书管理系统设计与实现.doc
附件是 华为 OD 机考攻略_加强版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!
数据来源:中国人口与就业统计NJ-2023版
基于RFID的资产管理系统设计与实现.doc
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
数据来源:中国人口与就业统计NJ-2023版