王朝网络
分享
 
 
 

Struts数据验证笔记

王朝java/jsp·作者佚名  2006-01-08
宽屏版  字体: |||超大  

Struts数据验证笔记

<For Struts1.0> rainy14f@sohu.com

实践平台:Windows2000 Pro. Jbuilder9.0. Tomcat. Struts1.0

1. 关键字:ApplicationResources.properties ActionForm ActionErrors ActionError

web.xml

2. 大体步骤:可以在ActionForm的validate方法也可以在Action的perform方法中验证。两种方式的区别据说在于web.xml中把”validate”设置为”true”那么在执行perform之前会先执行ActionForm的validate方法(我在实验的时候发现web.xml的validate元素设置为false则无法运行,把这行删掉也一样会先执行validate方法,还不知道是为什么)。在WEB.XML文件中设置资源文件和验证值;在资源文件中设置错误处理需要显示的提示;在Action或ActionForm类中编写错误处理代码;在jsp页面的适当位置加入<html:errors/>以使它在有错误的时候把错误显示出来。

3. 具体做法:

a) 在web.xml文件中设置如下:

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<init-param>

<param-name>debug</param-name>

<param-value>2</param-value>

</init-param>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<init-param>

<param-name>validate</param-name>

<param-value>true</param-value>

</init-param>

<init-param>

<param-name>application</param-name>

<param-value>ApplicationResources</param-value>

</init-param>

<load-on-startup>2</load-on-startup>

</servlet>

资源文件的的<param-value>由其位置决定,如果是在classes/com/res目录下,那么就要设置为com.res.ApplicationResources。资源文件以properties为扩展名。

b) 在WEB-INF目录下的classes子目录中建立ApplicationResources.properties文件。

文件的内容由成对的key和 value组成。比如,设置如下:

index.title=Struts Tutorial

index.title2=Struts教学

errors.header=<hr><h3>Errors</h3><ul>

errors.footer=</ul><hr>

error.a=<li>Field A can't be empty

error.b=<li>Field B can't be empty

errors.header和errors.footer是出错时struts自动加入的头和尾。自己定义的错误就可以写在下面error.a,error.b,等号后面是要显示的内容。

c) 在Action中编写错误处理的代码。

这里用到两个类ActionErrors和ActionError,他们都是包含在org.apache.struts.Action包里。用ActionError生成新的错误,把所有的错误储存在一个类似ArrayList的ActionErrors对象里。最后动态生成ActionForward对象,以返回原页面。

ActionErrors errors = new ActionErrors(); //生成新的错误对象容器

if( form.getA().equals("") || form.getA()==null ) { //如果有错误

ActionError error = new ActionError("error.a"); //生成新错误

errors.add(ActionErrors.GLOBAL_ERROR, error); //加入到错误容器中

}

if( !errors.empty()) { //判断错误容器是否为空,不空的话就要显示出来

saveErrors(httpServletRequest, errors ); //保存错误

String str = actionMapping.getInput(); //得到使程序返回的ActionForward

return new ActionForward(str); //返回原页面

}

如果要在ActionForm中验证,把这些语句写在其validate方法中,并且不需要saveErrors及其后面的语句,直接把errors作为返回值返回就可以了。

d) 在页面中显示错误提示

显示错误的页面就是前面ActionForward所返回的页面,也就是按了submit后forward到这个Action的jsp文件。当然也可以定义成别的jsp文件,但是上面的代码就要改一改。

在页面的适当位置(一般是表单上方)加入标志<html:errors />

那么,当有错误发生时(在Action里判断的),就会按照资源文件里的设置显示出错误提示。

如上面的ApplicationResources.properties 所示,就会象下面这样:

Errors

· Field A can't be empty

e) 进阶

另一种使用了java.text.MessageFormat类,可在消息中指定替换字符串,例如:

error.invalid=<b>Invalid Number{0}</b>

创建一个错误消息:

ActionError error = new ActionError(‘error.invalid’,new Double(-1));

JSP页显示:Invalild Number –1

还有获得特定消息的错误关键字:

public String getKey()

还有获得替换字符串数组:

public String[] getValues()

效果示例:

输入表单:

JBuilder Generated Struts JSP for ActionForm validation.MyForm

出错后返回并提示:

JBuilder Generated Struts JSP for ActionForm validation.MyForm

Errors

Field A can't be empty

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝网络 版权所有