DBMNG数据库管理与应用

书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有书籍,就好像鸟儿没有翅膀。
当前位置:首页 > 经验分享 > Java组件

struts2校验框架

一、校验框架是基于每一个action的。也就是每一个action对应一个校验配置文件,这个文件名字是:action的类名+“-validation.xml”;
二、一个xml是由一个dtd与sdma,这里的校验文件是基于dtd的,可以从例子里copy dtd的配置。
三、在保存的时候如果机器连网的时候在保的时候MyEclipse会下载这个dtd从而可以提示dtd里面的内容,在访问校验框架的dtd时不要用IE进量用firefox,firefox可以看到dtd里的内容。
四、dtd本身是一个xml来声明,但是它不是一个xml文档,sdma是一个xml文档。它是基于xwork的校验。
五、这个dtd的根元素是validators,里面有两个子元素field与validator,它们两个至少要出现一个,至少出现一次,也可以都出现。
六、struts有两种校验方式,一种是字段校验另一种是非字段校验。
七、字段校验是用来校验action里面的某一个字段的,一个field是对一个属性的校验。
八、field里至少要出现一个field-validator标签,field有一个必填的name属性对应action里的属性名。
九、field-validator里可以有零个或多个param与必须有一个message。
十、field-validator有一个type属性,它是从xwork的jar包里的com.opensymphony.xwork2.validator.validators包的default.xml文件里找类型。。
十一、param是一个字符串,它也有一个name属性也是字符串类型的,name属性对应default.xml里类型所实现的类里的属性名,值为自己的要求。
十二、message也是一个字符串,字有一个属性key也是字符串类型的,它可以提供也可以不提供。message的值是用户提示的错误信息,它里面是可以国际化的。
十三、message里的${}里面写进param里name的属性值,它表示在显示信息的时候显示param的值。
十四、如果存在硬编码与校验文件同时存在他们都会执行,这样会容易混,所以在实际开发的过程中要妈用硬编码实现要妈用校验文件实现。
十五、default.xml里面有required、requiredstring、int、long、short、double、date、expression、fieldexpression、email、url、visitor、conversion、stringlength、regex、conditionalvisitor几种校验。
十六、struts2也支持客户端的校验,但是theme一定不可以为simple,然后把表单的validate属性设置为true,它会自动自成与校验框架一致的javascript校验,也就是说struts2的客户端校验也是基于校验框架的。一般不会去使用它,而在表单的onsubmit事件里写自己的javascrip校验。
十七、struts2会给自己的标签生成ID但是如果指定了ID就不会生成ID了,以指定的为标准。
十八、当多个业务逻辑方法的时候,准确的说应该是一个逻辑方法对应一个校验方式,校验文件应该是:action类名+“-”+方法名+“-validation.xml”。如果也有action的类名+“-validation.xml”的文件它会先执行action的类名+“-validation.xml”的再执行action类名+“-”+方法名+“-validation.xml”,所有如果有多个逻辑方法时就写多个action类名+“-”+方法名+“-validation.xml”的校验文件。
十九、如果一个action继承另一个action如:
   ParentAction
   {
       test方法
   }
   ParentAction-validation.xml
   ParentAction-test-validation.xml
   ChildAction extends ParentAction
   {
       test方法
   }
   ChildAction-validation.xml
   ChildAction-test-validation.xml
它的执行顺序是ParentAction-validation.xml->ParentAction-test-validation.xml->ChildAction-validation.xml->ChildAction-test-validation.xml一般不这样写。
二十、在校验框架里validator是非字段校验,其中type属性对应的校验的类型如:required、requiredstring、int、long、short、double、date、expression、fieldexpression、email、url、visitor、conversion、stringlength、regex、conditionalvisitor;里面的第一个param的name属性一定要是fieldName而值是要校验的字段其余的param与message与字段校验里的一样。
二十一、字段校验与非字段校验是可以并存的,底层产实现是一样的,相对而言字段校验的逻辑比非字段校验要清晰。
二十二、在字段校验里的field-validator标签里有一个short-circuit属性,它表示短路;也就是说当short-circuit为true时如果当前的校验失败时它就不再校验这个字段下面的校验信息了。
二十三、在硬编码与校验框架同时对一个属性校验并提示出不同的错误信息时,两个错误信息不会因是同一个属性而相互复盖。在页在校验框架的信息先出现。
二十四、在struts2里面真正存放field级别错误信息的对象是LinkedHashMap。
二十五、该LinkedHashMap的key是String类型的,value是ArrayList类型的。
二十六、对于Action级别的错误信息,实际上是放置在ArrayList中的。
二十七、action的getFieldErrors()方法返回的是一个不可以增加错误,它返回的是一个新的或不可修改的action。getFieldErrors()返回的是一个原来LinkedHashMap的一个复本,所以不可以从这里添加,它是只读的。
二十八、对于Action级别的错误信息,实际上是放置在ArrayList中的。
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号