分享
 
 
 

Struts快速学习指南9(内部培训教材)-大部分素材来自于《Programming Jakarta Struts》一书

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

当你HTML form中添加了一个属性,需要在DynaActionForm中添加一个属性时,就不需要去修改具体的ActionForm类,只需要在配置文件中添加一个form-property元素即可,大大提高了可扩展能力。

前面我们已经了解到,ActionForm的reset()方法默认不进行任何操作,在DynaActionForm中,reset()方法默认将所有属性设置为默认值,如果在配置文件中没有为该属性设置默认值,将会按照java编程语言的规范根据属性的类型为其进行初始化,例如:数字(int ,double,float)的将会初始化为0,Ojbect类型将为初始化为null。

注意:在配置文件中定义的form-property的type属性,其值为一个java类名,因此对于java语言中的主类型,如ini,long必须定义为java.lang.Int,java.lang.Long,其它主类型依次类推。

1.1.1.1.1 使用DynaActionForm执行校验规则

同ActionForm一样,DynaActionForm也没有提供validate()方法的默认操作,幸运的是,Struts提供了另外一种框架来帮助大家解决校验的问题,这就是Struts Validator框架。Struts Validator 框架由David Winterfeldt编写,现在已经成为Struts主分发的一部分,它提供基于规则的校验,对于常用的校验,如必填项目,email,电话等等提供了现成的规则,只需要通过配置文件进行配置即可。关于Struts Validator框架的详细介绍,见后续章节。

1.1.1.2 Validator 框架

Struts允许在ActionForm的validator()方法中添加校验代码,对用户输入的数据进行规则校验,这能很好地工作,但是,这存在一些限制,举个简单的例子,一个必填项现在不是必填项了,要满足这个简单的需求就需要更改ActionForm类的validator()方法,再进行重新编译,很麻烦。本节我们来学习Validator框架,看它是如何解决校验问题的。

1.1.1.2.1 Validator的安装、配置

Validator目前是Jakarta Commons 项目的一部分,它也被包含在Struts主分发里面,可以直接使用Struts中自带的Validator库,也可以去网站上下载http://jakarta.apache.org/commons/

Validator需要一些其它库的支持,例如Jakarta ORO,不过没关系,Struts分发包里面都包含了,你只需要按照第2章介绍的将Struts安装到你的应用中,就一切ok。

1.1.1.2.1.1 配置校验规则

前面提到过,Validator是通过校验规则来实施校验,这些校验规则被配置在配置文件中,这意味着不需要修改源代码就可以方便地更改校验规则,是不是感觉很不错?Validator所需要的配置文件有两个:validation-rules.xml和validation.xml。

1.1.1.2.1.2 validation-rules.xml

在validation-rules.xml文件中配置了一些全局性的校验规则,使得你在应用程序中使用校验而不用关注实现细节。这个配置文件是Validator框架自带的,可以用在所有Struts应用中。它默认配置了许多很常用的规则,一般来说,不用去更改它,除非需要扩展或修改这些默认的校验规则。

建议:即使你需要扩展一些规则,也不要去修改validation-rules.xml,而是通过新的配置文件去定义你所扩展的校验规则。

validator-rules_1_1.dtd定义了validation-rules.xml文件的结构,根元素是form-validation,它包含一到多个global元素,global元素包含一到多个validator元素。

每一个validator元素定义了一个唯一的校验规则。下面是validation-rules.xml文件中的一个片断,用来定义必填项(required)校验规则:

<validator

name="required"

classname="org.apache.struts.util.StrutsValidator"

method="validateRequired"

methodParams="java.lang.Object,

org.apache.commons.validator.ValidatorAction,

org.apache.commons.validator.Field,

org.apache.struts.action.ActionErrors,

javax.servlet.http.HttpServletRequest"

msg="errors.required">

</validator>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有