使用struts框架主要好处之一是它内置接口_第1页
使用struts框架主要好处之一是它内置接口_第2页
使用struts框架主要好处之一是它内置接口_第3页
使用struts框架主要好处之一是它内置接口_第4页
使用struts框架主要好处之一是它内置接口_第5页
免费预览已结束,剩余26页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Struts框架的主要好处之一是它的内置接口,执行传入的表单数据的数据验证。如第4章所的,在提交一个HTML表单,Struts的捕获表单数据,并使用它来填入您的应用程序的ActionForm的子类之一(bean)分配给的窗体。formbeanvalidate()方法被调用来执行任何必要的验证传入的数据。如果有任何验证失败,HTML表单被重新Struts的内置的验证界面,但是,仍然有它的缺点。通常情况下,对于受影响的代码。为了解决这个问题,并提高Struts的验证界面,·创建Validator框架作为第附加到Struts的。StrutsJakartaCommons项目StrutsValidator是一个独立的框架一遍,还是Struts的实现从编码的硬编码验证逻辑painless.Insteadbeanvalidate()XML配置文件来,应适用于每一个表单的验证Bean.If你不需要提供验证验证,你可以你自己的Validator框架的细节,有必要给予验证如何工作的概述。回想一下,如果没有您的表单beanobjects.Each表单bean场()方法。此外,你必须写,将的错误消息失为验证的ActionFormbeanJava方法被“安装”,以及他们如何应该分别施加给定的应用。验证rules.xml验证rules.xml每个验证例程。如果配置的话,验证器会发出这样的validation.xml中bean。在此文件中定义使用逻辑bean从名字验证rules.xmlbeanActionFormValidator框架来包装与StrutsValidator是struts-config.xml:<-<plug-inclassName="<设置属性属性=值=WEB-INF/validator-rules.xml/WEB-INF/validation.xml插件这个定义将导致Struts的加载和初始化校验器插件为你的Web应用程序相对路径来指定,如前面的Notethatyourapplication的struts-config.xmlDTD,它指定在哪些元素显示在顺序在适当的定文件,以便它符合DTD。配置验证器rules.xml程序很简单,就是入到系统中执行特定的Java方法验证rules.xmlStruts验证-rules.xml中arepluggedintoValidator:<DOCTYPE“-//Apache的//DTD下议院1.0//EN““mons/dtds/validator_1_0.dtd”<校验器名=类名=“.apache.struts.validator.FieldChecks”方法=“validateRequired”methodParams=java.lang.Objectmons.validator.Field,.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest“味精=“errors.required”><![CDATAvalidateRequired(表格)isValidTRUE;focusFieldNULL;I=0;变种栏=Array();oRequired=新要求();对于(XINoRequired){变种字段=形式oRequiredX0如果(field.type=='文本'||field.type=='textarea的'||field.type=='文件'||field.type请选择一'||field.type=='广播'||field.type==''){无功值='';如果(field.type)SIfield.selectedIndex如果(SI值field.optionsSI的值}值field.value}如果(修剪(值)0)倘(i==0){focusField字段}域[我oRequiredX1}}}如果(fields.length0){focusField.focus();警报(fields.join(的n))}}从第左边和右边修剪空白。trim(S){s.replace(^\秒*/)(s*$/,)}JavaScript的校验器全球表单验证验证-rules.xml中validation.xmlJavaScript的JavaScript的todefineclientsideJavaScriptcodeforperformingthesamevalidationontheclientsideasisperformedontheserverside。Struts提供来包装与预先设定的验证-rules.xml中6-1逻辑列出每个预配置的验证验证-rules.xml中fileisfoundinChapter18。第六章:完整的参考绒毛/Struts的:TCR//223131-9/第6byteValidates指定的字段包含一个有效的字节。dateValidates指定的字段包含一个有效的日期。doubleValidates指定的字段包含一个有效的两倍。Validatese-mail地址。floatValidates指定的字段包含一个有效的浮点数。floatRangeValidatesfloat和值以内integerValidates指定的字段包含一个有效的整数。6-11Validator的预配置的验证maskValidatesthatthespecifiedfieldconformstoagivenregularexpression()intRange(即空格,制表符和换行符)6-12Validator的预配置的验证,ActionFormActionForm的itself.Validator的ActionForm的ActionForm的验证()验证()平行于Struts提供的功能,验证给你两条bean时进行选择。你可以选择第一条路径是创建一个bean对象喜欢这里所示:;公符串getUsername()返回用户名}setUsername(字符串username){this.username=用户名;}公符串取回()返回}公共无效setPassword(字符串){this.password=;}}ActionForm的ActionForm的“sempty重设()验证()beanstruts-config.xmlbean<bean的名称=logonForm类型=com.jamesholmes.minihr.LogonForm表单豆bean的逻辑名validation.xml中<DOCTYPE“-//Apache的//DTD下议院1.0//EN““mons/dtds/validator_1_0.dtd”<form<fieldproperty="username"<arg0场</FORM表单集</表单验证>的bean它们所应用的名称。asshownhere<form-propertyname="username"<form-propertyname="password"</表单豆>DynamicFormBeansdonotrequireyoutocreateconcreteFormBeanobjects,而是FormBeanStrutsbean为您服务。验证程序允许您使用这个概念就像你会与Struts。为验证唯一的区别是,您指定您的表单bean的类型是的。bean定义是验证时,您将使用的名称validation.xmlbean。bean两个标准选项,验证提供anadvancedfeaturefortyingmultiplevalidationdefinitionstooneFormBeandefinition。-bean,验证程序使用struts-config.xmlvalidation.xml中asubsetofthefields.BecausevalidationdefinitionsaretiedtotheFormBean时,unusedfields.WhentheFormBeanisvalidated,ActionForm的bean。这样,你可以Action表单bean使用beanbean公共类为AddressFormValidatorActionForm}ForDynamicFormBeans,youspecifyatypeof。bean定义struts-config.xml<bean的名称=“为AddressForm类型=“.apache.struts.validator.DynaValidatorActionForm”validation.xml文件,你一组验证到一个Action的路而不是一个formbean的名称,因为如果你定义了两个操作,创建地址bean,如下图所示,每一个都有独特的<操作路径=createAddress类型=com.jamesholmes.minihr.CreateAddressActionNAME“为AddressForm<操作路径=editAddress类型=com.jamesholmes.minihr.EditAddressActionNAME“为AddressForm</动作validation.xmlbean<form<fieldproperty="city"<arg0场</FORM<form<fieldproperty="state"<arg0场</FORM</表单集>或,验证知道使用一个Action的路径找到验证Bean的逻辑名称。该validation.xmlFormBeans.EachFormBeanthatyouwanttovalidatehasitsowndefinitioninthisfile。Bean'sfieldsFollowingisasamplevalidation.xml中<DOCTYPE“-//Apache的//DTD下议院1.0//EN““mons/dtds/validator_1_0.dtd”<form<fieldproperty="username"<arg0场<fieldproperty="password"<arg0场</FORM表单集表单验证validation.xml中每bean的定义beanValidatorwillattempttomatchthenameeitheragainstaFormBean'slogicalnameoragainstanAction'spath。Insidethebean。该验证rules.xmlvalidation.xml18验证程序使用Struts的资源机制外化的错误消息。验证rules.xml中<校验器名=类名=“.apache.struts.validator.FieldChecks”方法=“validateRequired”methodParams=java.lang.Objectmons.validator.Field,.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest“味精=“errors.required”>预打包附带的Struts的例子文件验证rules.xmlesprepackagedwithStruts'exampleapplications:Validator框架验证#错误消息errors.required0errors.minlength={0}不能少于1}个字符。errors.maxlength0不能大于2个字符。errors.invalid={0}是无效的。errors.byte={0}必须是一个字节。errors.short={0}必须是短。/r/eger={0}必须是整数。errors.long={0}必须是一个长期的。errors.float={0}必须是浮点数。errors.double={0}必须是一个双。errors.date={0}不是一个日期。errors.range0不在范围1到2}。errors.creditcard={0}不是一个有效的号码errors.={0}是无效的电子邮件地址请注意,每个消息都有占位符{0}1},或形式{2}。在运行时,:errors.required0是必需的。validation.xml中值,它应该被用来代替0<form<fieldproperty="bid"<arg0场</FORM03}--Intheprecedingexample时,arg0替换{0}占位符。这个的prompt.bidvalidation.xml为ag0:<arg0key="AuctionBid"10Validatorprovidesaneasy到usemechanismforperformingclient验证rules.xml中ToenableclientsidevalidationyouhavetoplacetheHTMLTagLibraryJavaScripttagineachJSPforwhichyouwantvalidationperformed,asshownhere<html:javascript该JavaScriptvalidation.xml<form<fieldproperty="username"<arg0场<fieldproperty="password"<arg0场</FORM6.2添加一个新的验证规则的验证-rules.xml中validation.xml中并以方式使用,而不是被硬编码在每个表单bean想要inthissection.Howeveryoucanplacethemethodinanyclass.Yourvalidationmethod公共静态validateSsNum(java.lang.Object中,mons.validator.ValidatorAction,mons.validator.Field,.apache.struts.action.ActionErrorsjavax.servlet.http.HttpServletRequest)OFCOURSE,thenameofyourmethodwillvary,6-2说明了每个验证方法的的validateSsNum(;;进 进 进 进口.apache.struts.action.ActionErrorsMiniHrValidator{公共静态validateSsNum(对象豆ActionErrors{字符串值();如果(值==NULL||value.length()<11){errors.add(field.getKey(),Resources.getActionError(请求动作,场));false;}为(inti0I11i++)倘(i3||我6)如果(value.charAt(ⅰ)=!'-'){errors.add(field.getKey(),Resources.getActionError(请求动作,场));false;}的elseif(0123456789indexOf(value.charAt(ⅰ))1){errors.add(field.getKey(),Resources.getActionError(请求动作,场))false}}true}}java.lang.ObjectThebean对象(toObject)rules.xmlfilethevalidation.xmlfile定义为.apache.struts.action.ActionErrorsTheActionErrorsobject店验证错误javax.servlet.http.HttpServletRequestTheHTTPServletRequestobject胶囊包封HTTP请求。6-31-2-3该validateSsNum(validated.Thevalueisretrievedbydeterminingthefieldsnamewithacalltofield.getProperty()ValidatorUtil.getValueAsString()getValueAsString()field'svalue。TherestofthevalidateSsNum()logic.Ifthevalidationfailsforanyreason,验证rules.xmlfile.Asdiscussedearlierinthischapter,validationrules验证-rules.xml中validation.xml中<校验器名=ssNum类名=com.jamesholmes.minihr.MiniHrValidator”方法=“validateSsNum”methodParams=java.lang.Objectmons.validator.Field,.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest“味精=“errors.ssNum”><![CDATAvalidateSsNum(表格)bValidTRUEfocusFieldI0变种栏=Array()oSsNumssNum()对于(XINoSsNum)如果((形式oSsNumX0|形式oSsNumX0]。类型=='textarea)(表格oSsNumX0]value.length0){无功值=形式oSsNumX0的值bRightFormatTRUE如果(value.length11){bRightFormat=FALSE;}为(VARN0,N11,N)如果(N3||N=6)如果(value.substring(N,N+1)=){bRightFormat=FALSE;}的elseif(0123456789indexOf(value.substring(N,N+1)==-1){bRightFormat=FALSE;}}如果(bRightFormat)倘(i0)focusField形式oSsNumX0}域[我oSsNumX1bValid=FALSE;}}}如果(fields.length0){focusField.focus();警报(fields.join(的n))}}JavaScript的校验器Asyoucansee,属性属性validation.xml中TheprecedingcustomvalidationrulealsodefinesJavaScriptcode,insidetheopeningwhichwillbeusedifclientJavaScriptJavaScript验证失败,它会HtmlForm被提交。验证-rules.xml中<validatorname="ssnum"全球</表单验证>ssnum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论