Struts之form中reset方法的用途——(解决)

本文介绍了在Struts框架中如何合理设置ActionForm的可视范围,并利用reset方法进行数据初始化,从而实现表单数据的高效管理和复用。特别讨论了在添加和编辑场景下如何简化页面代码并保持良好的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:
对象的可视范围:request、session、application、page。
Request:在一个请求周期内有效。就是从你点击页面上的一个按钮开始到服务器返回响应页面为止(包括响应页面)。
Session:在一个用户与服务器建立连接的整个过程中有效。
Application:在整个web应用程序内有效。
Page:仅在一个jsp页面内有效。

第二步:
ActionForm在你确定的有效期(可视范围)内是唯一的。

第三步:
在每次为ActionForm赋值前调用它的reset方法。作用是使ActionForm中的值恢复初始状态。在应用中我们可以通过在reset中为变量赋初值的方式,使得页面上的某个对象有显示值。

第四步:
可视范围与赋值前的初始化结合。
由于第二步所述特性,如果可视范围是request,则reset方法并不是很重要,因为你每次调用时都会产生一个新的ActionForm实例,所以你所操作的ActionForm不会与别人分享同时也就不会受别人的影响;如果可视范围是session,由于在session范围内此ActionForm是唯一的,所以你在session范围内需要用到此ActionForm的地方调用的都是同一个ActionForm,要是你没有在reset中对变量赋初值那么前一次调用ActionForm是为它赋的值将在此次调用时有效,这到也没什么。但是,如果恰巧再次调用时你仅仅需要为ActionForm中的一部分变量赋值,那么其余的变量将保持上一次得到的值,这样你就得到了一个“新旧混合体”,我想这多半不是你所期望的;如果可视范围是application,那其影响就更是不难理解了,这时不但是你自己会影响你自己,使用应用的其他用户的操作也会影响到你。

<转自:http://www.blogjava.net/zzheng/archive/2008/09/05/227207.html>

---------------------------------------------------------------------------------------------------------------------------------

说明:在Struts中对于每一个请求,控制器都会先调用ActionForm的reset( )方法,然后把用户输入的表单数

据组装到ActionForm中。也就是说,我们在显示界面中用到的表单的值(默认值),使用这里得到。

问题提出:很多人喜欢将验证使用Validator验证框架,它使用起来很方便。但在我们的实际工作当中,我

们需要将(比如一篇文章)的添加,编辑放在一个显示页面去操作,这样我们在编辑的时候就必须在现实

的页面查询到我们需要编辑的文章信息,如 标题,时间,内容,文章的录入人等这些信息,这样在显示

页面我们无法避免的在HTML代码中夹杂我们的查询(无论采用何种方式),然后将查询的内容对应到具

体使用的表单的value中进行编辑。这样,功能完成了,但页面看起来有些乱。

解决办法:利用ActionForm的reset()方法,利用它对数据初始化的能力。我们利用文章的ID号分别判断到

文章添加和编辑状态,然后再reset()方法中,可以结合数据库的查询将需要编辑的字段(表单值)初始化

在这里,(当然了添加就直接初始化了),这样我们的显示页面就只有HTML和Struts的标签了,显示页面

变得轻巧了许多。

优点:显示页面变得简洁轻巧,页面修改变得简单。

缺点:ActionForm reset()内容增加,变得庞大。需要很好的规划组织(当然了这种代价也是值得的)。


这种使用的方式可能有的朋友并不赞同,欢迎大家来讨论。因为没有什么是一成不变的,灵活的应用是我

们生存之道。

<转自:http://www.blogjava.net/kela/archive/2005/11/11/19278.html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值