您的位置:首页 > 编程语言 > Java开发

struts表单校验失败后的整数重显问题(Form中属性类型用String的优势)

2007-08-21 17:39 351 查看
假设ActionForm Bean中有一个整数类型的属性,如果将其类型定义为int,这个属性的默认值是0;在表单页面中用一个文本框来输入这个属性的值,当文本框中没有填写任何内容时,发送到WEB服务器的参数值为一空字符串"";当ActionForm Bean中的其它属性校验失败时,回到表单页面重新显示,这时,与整数字段对应的文本框中显示的内容为0,而不是最初的那样(没有任何内容)。
为此,我们想到了在Spring MVC中所采用的办法:将整数类型的属性定义为Integer类型,这样,该属性的默认值为null,借助<html:property>可将null显示为空字符串,但是,实际运行发现,ActionForm Bean中的其它属性校验失败回到表单页面重新显示时,与Integer类型的属性对应的文本框中显示的内容仍然为0。这说明struts在将请求参数组装进ActionForm Bean对象中时、它也会将内容为空字符串""的请求参数(文本框中不填写任何内容时即会出现这种情况)装配到ActionForm Bean中,并且将空字符串""转变成0值的Integer数据。对于这种情况,我们想到了将原本属于整数的属性设计成String类型的妥协解决办法,但觉得不是很理想,想知道各位有经验的朋友对这种情况是如何处理的?特向各位朋友请教。

---------------------------------------------------------------------------------------
虽然说如果用String类型可以解决上面的问题,但是我本人是主张Form的属性类型和数据库的中的类型相对应。网上也有人说如果把Form的属性类型都用String来代替,然后从页面得到值以后再做类型转换,或者sql语句操作,让sql语句去做类型的转换。但是这样如果我们要根据Form里的属性做排序的时候就麻烦了!
----------------------------------------------------------------------------------------
转载:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1429695
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: