- 浏览: 1525553 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> <form-validation> <formset> <form name="UserinfoForm"> <field property="email" depends="email"> <arg0 key="UserinfoForm.email" /> </field> <field property="mobile" depends="required"> <arg0 key="UserinfoForm.mobile" /> </field> <field property="description" depends="maxlength"> <arg0 key="UserinfoForm.description" /> <arg1 name="maxlength" key="${var:maxlength}" resource="false" /> <var> <var-name>maxlength</var-name> <var-value>200</var-value> </var> </field> </form> <form name="PasswordForm"> <field property="newPass" depends="required"> <arg0 key="PasswordForm.newPass" /> </field> <field property="oldPass" depends="required"> <arg0 key="PasswordForm.oldPass" /> </field> <field property="conPass" depends="required"> <arg0 key="PasswordForm.conPass" /> </field> </form> </formset> </form-validation>
validation.xml文件的文档结构是由validator_1_1_3.dtd文件定义,其文件头部内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
其顶层元素为:<form-validation>,它包含<formset>和<global>子元素。一般只需要定义<formset>元素,<formset>元素定义格式如下:
<formset>
<constant></constant>
<form></form>
</formset>
其中<constant />为可选子元素,而<form />子元素至少需要出现一次。<form />子元素的定义格式如下:
<form name="">
<field property=""></field>
..............
<field property="" depends="" page="" indexedListProperty=""></field>
</form>
其中属性描述如下:
l name:指定了表单的名字与配置文件中的form-bean的name相同;
l field:对应表单中验证的字段;
l property:对应ActionForm的属性;
l depends:指定验证规则,例如:required、maxlength等;
l page:ActionForm若是跨页表单,则与表单中的page属性对应。
2. <field>子元素配置举例
2.1 必填(或非空)验证
非空验证的depends属性值为required,配置举例如下:
其中<form name="UserForm">
<field property="loginName" depends="required">
<arg0 key="UserForm.loginName" />
</field>
<field property="name" depends="required">
<arg0 key="UserForm.name" />
</field>
<field property="password" depends="required">
<arg0 key="UserForm.password" />
</field>
</form>
注意:为了使默认的验证产生正确的信息,开发人员还需要在资源文件中添加errors.required等默认的错误信息,具体操作时,开发人员可在简体中文的资源文件:ApplicationResources_zh_CN.properties.bak中添加如下信息:
ApplicaitonResources.properties中添加如下内容:
errors.required = {0}不能为空 errors.maxlength = {0}长度不能大于{1}个字符 errors. minlength = {0}长度不能小于{1}个字符 errors.short = {0}必须是一个整数 errors.integer = {0}必须是一个整数 errors.long={0}必须是一个整数 errors.float={0}必须是一个浮点数 errors.double ={0}必须是一个双精度型 errors.date={0}必须是一个日期 errors.range = {0}必须是 {1} 到 {2}之间的整数 errors.creditcard={0}必须是一个有效的信用卡号码 errors.email = {0}是无效e-mail地址
在英文资源文件
最大长度和最小长度验证
errors.required={0} is required. errors.minlength={0} can not be less than {1} characters. errors.maxlength={0} can not be greater than {1} characters. errors.invalid={0} is invalid. errors.byte={0} must be a byte. errors.short={0} must be a short. errors.integer={0} must be an integer. errors.long={0} must be a long. errors.float={0} must be a float. errors.double={0} must be a double. errors.date={0} is not a date. errors.range={0} is not in the range {1} through {2}. errors.creditcard={0} is an invalid credit card number. errors.email={0} is an invalid e-mail address.
2.2
可在<field>元素的depends属性中添加maxlength和minlength来限制对于那个字段的最大长度和最小长度,使用举例如下:
2.3 <field property="password" depends = "required, maxlength, minlength">
<arg0 key = "UserForm.password"/>
<var>
<var-name>maxlength</var-name>
<var-value>12</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>
在Struts中还可以添加email验证,此时depends为email,使用举例如下:
<field property="email" depends="required, email">
<arg0 key="UserForm.email" />
</field>
2.4 日期验证
在Struts中还可以添加日期验证,此时depends为date,使用举例如下:
<field property="begintime" depends="date">
<arg0 key="HistoryForm.begintime" />
</field>
2.5 整数范围验证
在Struts中还提供了验证整数是否在某个范围之间,例如下述的例子验证整数是否在1到9999之间,配置如下:
<field property="score" depends="intRange"> <arg0 key="TestForm.score" /> <arg1 name="intRange" key="${var:min}" resource="false" /> <var> <var-name>min</var-name> <var-value>1</var-value> </var> <arg2 name="intRange" key="${var:max}" resource="false" /> <var> <var-name>max</var-name> <var-value>99999</var-value> </var> </field>
2.6 自定义验证
在Struts中的验证机制提供了扩展,开发人员可以添加自定义的验证规则,例如可添加文件类型的验证。此时需要编写的Java类、在validator-rules.xml添加该验证规则以及添加验证的js。
自定义验证的Java类CustomValidator的代码如下所示:
package com.amigo.struts.validation; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.apache.commons.validator.Field; import org.apache.commons.validator.GenericValidator; import org.apache.commons.validator.Validator; import org.apache.commons.validator.ValidatorAction; import org.apache.commons.validator.util.ValidatorUtils; import org.apache.struts.action.ActionMessages; import org.apache.struts.validator.Resources; /** * Struts自定义验证类. */ public class CustomValidator { /** * 判断文件类型 */ public static boolean validateFileType(Object bean, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request) { String value = ValidatorUtils.getValueAsString(bean, field .getProperty()); String inputType = value.substring(value.lastIndexOf('.')); String type[] = field.getVarValue("fileTypeProperty").split(";"); if (!GenericValidator.isBlankOrNull(value)) { try { boolean judge = false; for (int i = 0; i < type.length; i++) { Pattern p = Pattern.compile(type[i], Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(inputType); judge = m.matches(); if (judge) { break; } } if (!judge) { errors.add(field.getKey(), Resources.getActionMessage( validator, request, va, field)); return false; } } catch (Exception e) { errors.add(field.getKey(), Resources.getActionMessage( validator, request, va, field)); return false; } } return true; } }
接着还需要在validator-rules.xml这个验证规则文件中添加如下内容:
<!-- 判断文件类型--> <validator name="fileType" classname="com.cotel.comm.EarlyValidator" method="validateFileType" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" msg="errors.fileType"> <javascript> <![CDATA[ function validateFileType(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var formName = form.getAttributeNode("name"); oFileType = eval('new ' + formName.value + '_fileType()'); for (x in oFileType) { var field = form[oFileType[x][0]]; if ((field.type == 'hidden' || field.type == 'text' || field.type == 'file' || field.type == 'textarea') && field.disabled == false) { var iMax =oFileType[x][2]("fileTypeProperty").split(";"); var index = field.value.lastIndexOf("."); var length = field.value.length; var fileType= field.value.substring(index, length); var judege=false; if(length>0 && fileType!=""){ for (var j = 0; j < iMax.length; j++) { if (iMax[j].toLowerCase() == fileType.toLowerCase()) { judege = true; break; } } if (!judege) { if (i == 0) { focusField = field; } fields[i++] = oFileType[x][1]; isValid = false; } } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('"n')); } return isValid; } ]]> </javascript> </validator>
利用上面这个自定义的验证可以验证文件的类型,在下面的例子中验证文件的类型是否为jpg的,举例如下:
<field property="picPath" depends="required,fileType">
<arg0 key="TestForm.picPath" />
<var>
<var-name>fileTypeProperty</var-name>
<var-value>.jpg</var-value>
</var>
</field>
3. 完整配置实例
本小节举一个validation.xml配置的完整例子,本例汇总,对两个表单添加了验证规则。内容如下:
发表评论
-
fckedit和struts2集成不能上传文件的解决方法
2010-01-24 10:52 1616以前在使用fckedit+strut1上传文件很顺利,后来使用 ... -
struts validator框架
2010-01-09 13:56 1425Struts 验证器基础 步骤 1. 安装 Strut ... -
The path of an ForwardConfig cannot be null-struts validator验证框架异常
2010-01-09 13:54 3046struts validator验证框架异常 在测 ... -
关于一个Action对应多个Form
2009-12-28 23:49 1506由于一个Action可以用多个path来访问,所以我们可以通过 ... -
一个Action对应多个Form DispatchAction
2009-12-28 23:32 2704一个Action对应多个Form ... -
DynaValidatorForm类
2009-12-28 23:23 1285DynaValidatorForm类 http ... -
Struts出现No getter method for property的解决
2009-12-28 22:48 2007请从一下几方面着手检查代码 1、JavaBean中的属性 ... -
Struts Validator验证器使用指南
2009-12-07 18:34 786Struts Validator 验证器 ... -
Form '***' not found for locale 'zh _CN'
2009-12-07 16:13 4360Form '***' not found for locale ... -
Struts2 拦截器详细配置过程
2009-12-06 21:23 18201:所有拦截器的超级接口Interceptor ,Ac ... -
如何在SSH框架中使用Validator框架
2009-12-05 00:19 1330关键字: validator 下 ... -
java.lang.NoSuchMethodException
2009-12-04 23:56 2048关键字: validator 下面将介绍如何在SSH框架 ... -
Struts验证框架与一些技巧
2009-12-04 23:46 16176还是通过一些步骤例子说明 首先建立Struts工程的时候要 ... -
Struts-validator验证框架与一些技巧
2009-12-04 23:44 1158这个框架褒贬不一呀~~~ =========== ... -
struts 标签详解
2009-12-04 21:28 1035struts 标签详解 Action和jsp的开发其实就 ... -
HTTP Status 404 - Servlet action is not available(二)
2009-12-04 18:41 5872今天在帮公司的新手弄SSH的一个登录程序时,出现了Servle ... -
HTTP Status 404 - Servlet action is not available(一)
2009-12-04 18:40 7830sp /meCall 发表于2007-10-08, 1 ... -
SSH中Cannot retrieve mapping for action
2009-12-04 18:22 2181<script type="text ... -
Cannot retrieve mapping for action 之 问题解决
2009-12-04 18:21 11335struts的form标 ... -
利用Struts的Validator验证框架实现客户端和服务器端双验证
2009-12-04 18:18 1540...
相关推荐
在Struts2框架中,`validation.xml`是用于定义验证规则的重要配置文件。根据所提供的信息,我们可以了解到文章主要探讨了Struts2中两种不同的`validation.xml`配置方式,并且通过一个具体的例子进行了说明。下面将对...
这里我们主要关注的是`.xml`配置文件,特别是`validation.xml`,它是Struts2中用于定义Action类验证规则的配置文件。 `.xml`配置文件是XML格式的文本文件,用于存储应用程序的配置信息。在Struts2中,`validation....
`validator-rules.xml`和`validation.xml`是Struts 1.2中用于实现数据验证的关键配置文件。 `validator-rules.xml`是Struts 1.2的全局验证规则文件,它定义了一组通用的验证规则,这些规则可以被多个ActionForm对象...
XML验证的优点在于其灵活性和可读性。开发者可以在Action类旁创建一个与Action类同名的.xml文件,比如Action类名为`UserAction.java`,那么对应的验证文件就是`UserAction-validation.xml`。在这个文件中,我们可以...
3. **编写XML验证配置**:在Validation.xml文件中定义验证规则。例如: ```xml 用户名不能为空 ``` 4. **配置Action和Interceptor**:在struts.xml配置文件中,指定Action类和ValidationInterceptor...
在Struts2中,数据验证主要通过`validation.xml`文件进行配置,这个文件定义了每个Action类中字段的验证规则。`struts-default`是Struts2的核心包,包含了默认的拦截器链,其中就包括了数据校验的相关拦截器。 在给...
这里定义了Validator插件,并指定了两个XML配置文件的路径:`validator-rules.xml`和`validation.xml`。这两个文件分别用于定义具体的验证规则和消息资源。 #### `validator-rules.xml`与`validation.xml`文件 1. ...
5. **读取XML文件并应用验证**:使用XSSFDataValidationHelper和XSSFDataValidationConstraint类读取XML文件并应用数据验证。 ```java import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi....
3. **Validation 校验框架,配置 `validation.xml` 文件**: 这是Struts的验证框架配置文件,它遵循Commons Validator规则。`validation.xml`定义了表单字段的验证规则,例如: - `<constant>`标签定义常量,如`...
下面是一个简单的例子,展示如何在`validation.xml`文件中定义针对某个ActionForm的验证规则: ```xml <!-- validation.xml 示例 --> <param name="trim">true 请输入您的电子邮件地址。 ...
`validator-rules.xml`文件通常包含全局验证规则,而`validation.xml`文件则针对特定的表单Bean定义验证规则。例如,`validation.xml`可以这样编写: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
2. 验证规则文件:在Struts中,我们通常使用XML文件(如`validation.xml`)来定义字段验证规则。这个文件会与ActionForm类对应,声明每个字段需要满足的条件,如非空检查、长度限制、格式验证等。 3. 校验过程:当...
举个例子,假设我们有一个UserAction,它有四个方法:`Checkall()`、`save()`、`checkbyid()`和`update()`,那么对应的验证文件可能是`UserAction-checkall-validation.xml`、`UserAction-save-validation.xml`等,...
3. `ExampleAction-validation.xml`: 针对`ExampleAction`的XML验证规则。 4. `index.jsp`: 用户输入表单页面。 5. `success.jsp`: 验证成功后的结果页面。 6. `input.jsp`: 验证失败后展示错误信息的页面。 通过...
对于服务器端验证,你可以在struts-config.xml中定义ValidatorPlugIn,并创建一个或多个验证规则文件(如validation.xml)。例如: ```xml <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> ...
1. 验证配置文件(Validation.xml):这是定义验证规则的地方,包含各个ActionForm对应的字段及其验证规则,如必填、长度限制、格式校验等。 2. ActionForm:Struts中的业务逻辑对象,用于封装用户提交的数据。每个...
此外,还可以创建XML配置文件(如`validation.xml`)来定义更复杂的验证规则。 验证过程通常包括以下步骤: 1. 用户提交表单数据。 2. Struts2拦截器捕获请求并调用Action类的相应方法。 3. 在执行业务逻辑之前,...
6. **示例**:官方提供的实例通常包含了完整的流程,包括Action类的编写、Validation.xml的配置、JSP页面的显示以及如何处理验证失败。通过这些例子,开发者可以快速理解和掌握Struts2的表单验证。 总之,Struts2的...
10. **Validation Process**: 验证过程包括解析XML文档,与XSD规则进行比较,如果XML文档中的元素、属性和数据不符合XSD定义,则会抛出验证错误。 总的来说,Java中的XML Schema验证是一个关键的过程,它确保了XML...
1. **创建验证规则文件**:首先,你需要在项目的`WEB-INF`目录下创建`struts-validation.xml`文件(或根据项目需求命名为其他名字,如本例中的`struts-validator-rules.xml`)。 2. **定义验证规则**:在文件中使用`...