【Struts1.2总结系列】validation.xml验证文件的配置

北航机器学习期末考试试题2020年春 北航机器学习期末考试试题2020春 看csdn上试题收费,积分还挺高,本着共享的理念,把2020春季ML考试的试题公开,若侵权,立删 前8道题10分,第9题20分 决策树采用ID3算法 对宇宙星球是否适合生存分类 SVM的原理;软间隔、硬间隔;以及对非线性样本点分类 集成学习的原理,以及及串行boosting以及bagging的简单概括 K-means与混合高斯模型的异同以及EM算法的原理,如何计算 马尔可夫随机场最大团;马尔可夫随机场的联合概率分布(势函数表示),贝叶斯网络联合概率分布 PCA主成分基于 阅读详情
 
 1. 文件结构

       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>

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

注意:为了使默认的验证产生正确的信息,开发人员还需要在资源文件中添加errors.required等默认的错误信息,具体操作时,开发人员可在简体中文的资源文件:ApplicationResources_zh_CN.properties.bak中添加如下信息:

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

在英文资源文件ApplicaitonResources.properties中添加如下内容:

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来限制对于那个字段的最大长度和最小长度,使用举例如下:

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

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

PyQt5数据库开发3 6 QSqlQuery完整实操案例【图文详解】 PyQt5数据库开发3 6.1 QSqlQuery实操案例【多图详解】,本文有点长,主要每一个步骤都有对应的图文教程!!! 阅读详情

相关推荐

PyTorch实战:5步搞定Res2Net图像分类模型(附完整代码)

本文详细介绍了如何使用PyTorch在5步内构建高性能Res2Net图像分类模型,包括环境配置、核心模块实现、完整网络架构搭建、训练流程优化及模型部署技巧。Res2Net通过多尺度特征融合机制显著提升图像分类性能,附完整代码帮助开发者快速实践。

java5的博客 1023

Validator框架-validation.xml

validation.xml文件是Validator框架需要的另一个配置文件。该文件是特定于应用程序的,由开发人员自己来创建。它描述了那些具体应用中的ActionForm所使用的validator-rules.xml文件中的有效性验证规则。通过ActionForm在 validation.xml文件中配置所需要的验证规则,开发人员就不必将验证逻辑硬编码放在ActionForm的内部。一个简单的 v...

378

深度强化学习系列(13): 策略梯度(Policy Gradient)

对于DQN来说使用一个网络直接逼近了值函数,最后取得了非常不错的效果, 但是对于一些连续性控制或者动作空间特别大的环境来说,很难全部计算所有的值函数来得到最好的策略,那么直接计算策略的方法就别提出来了。 回顾一下前面几篇,所谓的策略,其实就是状态到动作的映射数学表达为 π:s→aπ:s→a\pi : s \to a, 我们用ττ\tau 表示状态s到最后一个状态的一个序列,表示为: τ:st...

深度强化学习(DeepRL)探索博客 4642

validation.xml的配置

validation.xml的配置 validation.xml文件是Validator框架需要的另一个配置文件。该文件是特定于应用程序的,由开发人员自己来创建。它描述了那些具体应用中的ActionForm所使用的validator-rules.xml文件中的有效性验证规则。通过ActionForm在validation.xml文件中配置所需要的验证规则,开发人员就不必将验证逻辑硬编码放在Act

球球之家 4073

DDR5内存Training全解析:从信号完整性到CS训练模式的实战指南

本文深入解析了DDR5内存Training的全过程,从信号完整性挑战到CS训练模式(CSTM)的实战应用。文章详细阐述了Training在DDR5高频时代的关键作用,对比了In-Band与OOB两种架构,并拆解了Intel MRC的核心训练步骤,为硬件与固件工程师提供了诊断与优化系统稳定性的实用指南。

weixin_29252171的博客 1031

Shader之——花草动画shader

今天 ,接到了个需求,花草的动画。谈到花草动画,立马就想到顶点动画,让顶点动起来就可以实现了。但是有个问题,所有的草都往一个方向运动,这个就麻烦了。因为在shader里没有随机这种概念,提到最多的是用一张噪声图来模拟。在网上搜索了一下,发现有更好的办法,就是用每个顶点到一个点的距离来控制动画的开始,毕竟每个顶点到同一个点的距离很少是一样的。 float dis = distance ...

baicaishisan的博客 2184

Apache Common-validator验证框架

Commons-Validator(一) Commons -Validator包用来把验证规则程序提取出来,以供重复使用。这个包可以使用在Struts中,也可以独立的应用在任何其它的应用中。用户可以通过 java类的方式自定义验证方法,也可以在配置文件中通过正则表达式配置验证方法。它不但支持服务器端的验证,客户端的验证也支持,具体需要使用tag把 相应的js方法写入相应的页面中。一、综述: 整...

iteye_14356的博客 820

电机转矩、功率与转速:核心关系、公式推导与工程应用指南

在电气传动与自动化控制领域,理解旋转机械的核心物理量是进行设备选型、系统设计和故障诊断的基础。转矩、功率和转速构成了描述电机性能的“铁三角”,它们之间通过经典的物理公式紧密关联。从原理上讲,功率是单位时间内做功的能力,转矩是产生旋转运动的力矩,而转速则决定了运动快慢。这三者的关系(P = T × n / 9550)不仅是理论核心,更是工程实践中的关键计算工具,直接关系到电机的驱动能力、能耗与系统匹配。其技术价值在于,它为从微型伺服电机到大型工业传动系统的设计提供了统一的量化分析框架。在应用场景上,无论是为输

weixin_29184371的博客 258

XML Validation

XML Validation XML with correct syntax is "Well Formed" XML. XML validated against a DTD is "Valid" XML. Well Formed XML Document

SlimApp 1121

基于NRF52833芯片的DW3000 SPI驱动接口代码实现

详细介绍基于NRF52833、nRF52820 、nRF52832 nRF52840 芯片的DW3000 硬件驱动接口代码

DT程序员的博客 1217

ThingsBoard教程(七):模拟设备遥测

前言 各位读者好,截止目前,ThingsBoard系列文章已经做了六篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 上一篇我们讲解了如何使用设备管理来对设备进行增删改查,和设备配置的一些基本概念,本篇文章就带大

知无涯 4578

java xml格式验证,【Struts1.2总结系列】validation.xml验证文件的配置

文:阿蜜果日期:2008-1-2——1-31. 文件结构validation.xml文件的文档结构是由validator_1_1_3.dtd文件定义,其文件头部内容如下:/p>"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN""http://jakarta.apache.or...

weixin_42137539的博客 560

YOLOv5算法改进(21)— 添加CA注意力机制 + 更换Neck网络之BiFPN + 更换损失函数之EIoU

本节课作者就结合论文对YOLOv5进行组合改进(添加CA注意力机制+更改Neck网络之BiFPN+更换损失函数之EIoU),小白必学!

小哥谈 2820

struts2 validation.xml 验证

当使用struts2的validation.xml进行验证时,需要注意如下几个方面: 1.表单一般使用struts2标签关闭客户端验证,使用name对应action中的属性 2.在Action配置中一定要设置input返回页面 3.添加验证只要创建验证的xml文件,在Action同包下,创建:Action类名-validation.xml <!DOCTYPE validators

夜凉如水 3191

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

struts validation.xml 配置

于validation.xml在validator.xml中使用了validation-rules.xml的验证规则注意一定要加其已经定义好的出错消息考到你的资源包里去,否则出错的时候,显示错误对话框里面却什么错误消息都没有,不允许发生这样的错误———————————————————————————:一共可定义4个(arg0..arg3),作用是向资源文件提供参数的值。属性同         

jixiuffff的专栏 8100

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Struts之validation.xml验证文件的配置

          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"           "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">        其顶层元素为:,它包含和子元素。一般只需要定义元素,元素定义格式如下:

pcdaan的专栏 893

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Struts2验证框架的配置及validation.xml常用的验证规则

validation.xml 的命名规则和放置路径: 文件名:-validation.xml就是要验证的Action类的名字。 要将此文件放于Class文件相同的目录。 如果在Action类在struts配置中有多个action实例(action name),那么对应某个action的验证文件名规则如下: 文件名:--validation.xml 例如:UserAction-login-validation.xml (注意:上面的并不是method name,而是struts.xml中配置的ac

王康的技术博客 1036

Struts2验证框架的配置及Validation.Xml常用的验证规则

validation.xml 的命名规则和放置路径:  文件名:-validation.xml 就是要验证的Action类的名字。要将此文件放于Class文件相同的目录。 如果在Action类在struts配置中有多个action实例(action name),那么对应某个action的验证文件名规则如下: 文件名:--validation.xml 例如:UserAction

xjh1991xjh的专栏 836

struts1.2的validation.xml验证文件的配置总结

1. 文件结构       validation.xml文件的文档结构是由validator_1_1_3.dtd文件定义,其文件头部内容如下:          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"          "http://jakarta

STAR学习笔记 1078

STRUTS框架(web.xml,struts.xml,XXXvalidation.xml配置信息)个人心得

前言:在学习Struts2中肯定遇到不少的难题,当时检查代码无误的时候,仔细检查你的配置文件是否正确,这里暂时提供3个.XML的配置信息

UckyK的专栏 2078

Struts2配置好的LoginAction-Validation.xml不管用

Struts2配置好的LoginAction-Validation.xml不管用

eickandy的专栏 735

Struts2 Validation学习

Every input is evil! ------------------------------华丽的分割线----------------------------------- 客户端提交的数据验证的方式有很多,可以在前段使用JS验证,可以在服务器端进行验证等,本文主要讲使用Struts2 Validation框架进行验证 假定已经存在一个ValidationAction接...

dianbajia8218的博客 233

Struts2 validation配置不生效

依次排查 文件名 首先,validation的命名需要符合规范,Action类名-validation.xml或者Action类名-Action逻辑名-validation.xml,比如LoginAction对应的验证的xml文件名应该为LoginAction-validation.xml,或者里面有个login()和register()的方法分别对应登录和注册,struts.xml里面对应a...

liupan_664021的博客 486

struts2 验证框架validation.xml不起作用的原因

1. 命名是否符合约定:  -validation.xml  --validation.xml  2.   validation.xml的标签是否正确,比如是否关闭所有标签,是否多一个关闭标签等。注意:这方面错误没有任何提示, 只是验证不起作用。  3.   fieldName 命名是否和jsp以及 action中的属性一致 如:         action中有userName 属性,

gscaiyucheng的专栏 1784
上一篇: 用TWaver Java制作精美的图层叠加图
下一篇: java jxl 单元格为空 数组越界
xulai_java
博客等级 码龄15年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值