`
gstarwd
  • 浏览: 1525553 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

validation.xml验证文件的配置完整小例子

阅读更多
<?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-beanname相同;

l          field:对应表单中验证的字段;

l          property:对应ActionForm的属性;

l          depends:指定验证规则,例如:requiredmaxlength等;

l          pageActionForm若是跨页表单,则与表单中的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>

 其中

<arg0 key="UserForm.password" />中的key跟资源文件中的键对应。

注意:为了使默认的验证产生正确的信息,开发人员还需要在资源文件中添加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属性中添加maxlengthminlength来限制对于那个字段的最大长度和最小长度,使用举例如下:

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

 2.3

Email验证

       Struts中还可以添加email验证,此时dependsemail,使用举例如下:

<field property="email" depends="required, email">

<arg0 key="UserForm.email" />

</field>

2.4 日期验证

       Struts中还可以添加日期验证,此时dependsdate,使用举例如下:

<field property="begintime" depends="date">

<arg0 key="HistoryForm.begintime" />

</field>

2.5 整数范围验证

       Struts中还提供了验证整数是否在某个范围之间,例如下述的例子验证整数是否在19999之间,配置如下:

<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

自定义验证的JavaCustomValidator的代码如下所示:

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配置的完整例子,本例汇总,对两个表单添加了验证规则。内容如下:

 

分享到:
评论

相关推荐

    struts2中两种validation.xml的配置方式

    在Struts2框架中,`validation.xml`是用于定义验证规则的重要配置文件。根据所提供的信息,我们可以了解到文章主要探讨了Struts2中两种不同的`validation.xml`配置方式,并且通过一个具体的例子进行了说明。下面将对...

    .xml提示的配置

    这里我们主要关注的是`.xml`配置文件,特别是`validation.xml`,它是Struts2中用于定义Action类验证规则的配置文件。 `.xml`配置文件是XML格式的文本文件,用于存储应用程序的配置信息。在Struts2中,`validation....

    validator-rules.xml,validation.xml

    `validator-rules.xml`和`validation.xml`是Struts 1.2中用于实现数据验证的关键配置文件。 `validator-rules.xml`是Struts 1.2的全局验证规则文件,它定义了一组通用的验证规则,这些规则可以被多个ActionForm对象...

    struts2官方例子7-表单验证 xml形式的验证

    XML验证的优点在于其灵活性和可读性。开发者可以在Action类旁创建一个与Action类同名的.xml文件,比如Action类名为`UserAction.java`,那么对应的验证文件就是`UserAction-validation.xml`。在这个文件中,我们可以...

    Struts2 Validation验证实例

    3. **编写XML验证配置**:在Validation.xml文件中定义验证规则。例如: ```xml 用户名不能为空 ``` 4. **配置Action和Interceptor**:在struts.xml配置文件中,指定Action类和ValidationInterceptor...

    简单的Stuts2验证例子

    在Struts2中,数据验证主要通过`validation.xml`文件进行配置,这个文件定义了每个Action类中字段的验证规则。`struts-default`是Struts2的核心包,包含了默认的拦截器链,其中就包括了数据校验的相关拦截器。 在给...

    Struts Validation框架浅尝

    这里定义了Validator插件,并指定了两个XML配置文件的路径:`validator-rules.xml`和`validation.xml`。这两个文件分别用于定义具体的验证规则和消息资源。 #### `validator-rules.xml`与`validation.xml`文件 1. ...

    Java 使用poi导入excel,结合xml文件进行数据验证的例子(已包含需要的Jar包)

    5. **读取XML文件并应用验证**:使用XSSFDataValidationHelper和XSSFDataValidationConstraint类读取XML文件并应用数据验证。 ```java import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi....

    Struts的一般配置文件

    3. **Validation 校验框架,配置 `validation.xml` 文件**: 这是Struts的验证框架配置文件,它遵循Commons Validator规则。`validation.xml`定义了表单字段的验证规则,例如: - `&lt;constant&gt;`标签定义常量,如`...

    Validator验证框架.pdf

    下面是一个简单的例子,展示如何在`validation.xml`文件中定义针对某个ActionForm的验证规则: ```xml &lt;!-- validation.xml 示例 --&gt; &lt;param name="trim"&gt;true 请输入您的电子邮件地址。 ...

    struts1验证框架相当好的经典例子

    `validator-rules.xml`文件通常包含全局验证规则,而`validation.xml`文件则针对特定的表单Bean定义验证规则。例如,`validation.xml`可以这样编写: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE ...

    一个简单的struts校验例子

    2. 验证规则文件:在Struts中,我们通常使用XML文件(如`validation.xml`)来定义字段验证规则。这个文件会与ActionForm类对应,声明每个字段需要满足的条件,如非空检查、长度限制、格式验证等。 3. 校验过程:当...

    struts2[1].0框架整合

    举个例子,假设我们有一个UserAction,它有四个方法:`Checkall()`、`save()`、`checkbyid()`和`update()`,那么对应的验证文件可能是`UserAction-checkall-validation.xml`、`UserAction-save-validation.xml`等,...

    Struts2中使用验证框架的简单例子

    3. `ExampleAction-validation.xml`: 针对`ExampleAction`的XML验证规则。 4. `index.jsp`: 用户输入表单页面。 5. `success.jsp`: 验证成功后的结果页面。 6. `input.jsp`: 验证失败后展示错误信息的页面。 通过...

    Struts1.2动态FormBean加验证功能的一个例子

    对于服务器端验证,你可以在struts-config.xml中定义ValidatorPlugIn,并创建一个或多个验证规则文件(如validation.xml)。例如: ```xml &lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"&gt; ...

    java做的struts验证框架例子

    1. 验证配置文件(Validation.xml):这是定义验证规则的地方,包含各个ActionForm对应的字段及其验证规则,如必填、长度限制、格式校验等。 2. ActionForm:Struts中的业务逻辑对象,用于封装用户提交的数据。每个...

    struts2验证框架简单实例

    此外,还可以创建XML配置文件(如`validation.xml`)来定义更复杂的验证规则。 验证过程通常包括以下步骤: 1. 用户提交表单数据。 2. Struts2拦截器捕获请求并调用Action类的相应方法。 3. 在执行业务逻辑之前,...

    Struts2 极速表单验证框架(说明+demo)

    6. **示例**:官方提供的实例通常包含了完整的流程,包括Action类的编写、Validation.xml的配置、JSP页面的显示以及如何处理验证失败。通过这些例子,开发者可以快速理解和掌握Struts2的表单验证。 总之,Struts2的...

    java中实现xmlschema验证文件借鉴.pdf

    10. **Validation Process**: 验证过程包括解析XML文档,与XSD规则进行比较,如果XML文档中的元素、属性和数据不符合XSD定义,则会抛出验证错误。 总的来说,Java中的XML Schema验证是一个关键的过程,它确保了XML...

    struts验证.rar

    1. **创建验证规则文件**:首先,你需要在项目的`WEB-INF`目录下创建`struts-validation.xml`文件(或根据项目需求命名为其他名字,如本例中的`struts-validator-rules.xml`)。 2. **定义验证规则**:在文件中使用`...

Global site tag (gtag.js) - Google Analytics