Struts 中scope 为 session和request 的ActionForm

本文详细解释了Struts框架中ActionForm的scope属性作用,以及如何在多次提交表单时解决数据混乱的问题。通过手动在表单Action中进行reset工作,防止数据覆盖,确保前后表单数据一致性。

对于一个ActionForm,有一个属性可选,也就是scope,默认选项为session。

scope这个属性的作用在于,对于每次生成的ActionForm,struts会把它放到request或者session中,以便在视图层能够取得一些数据信息。 

需要注意的是session级的ActionForm,一般我们用的都是request级别的,但是当我们需要利用到多个表单内容的话,可能就要用到session级了。当我们多次重复提交表单的时候,有时候会由于某些字段的特殊性造成数据的混乱,如: 原先在不同表单里选择了多个属性,其中包含复选框这个输入的。 下次我们重新提交表单的时候,如果是空选的话,其他属性会被覆盖掉(涉及到数据的收集部分),但是如复选框的信息是不会被覆盖的,空选就代表没有这个属性。所以在后来的表单中还是会残留着前一次表单中复选框的内容。

解决方案:具体看你操作流程,一般都是在最起先的表单的Action里手动进行一些reset的工作。 有些人可能会认为可以采用ActionForm中的reset()方法,遗憾的是,在每次收集数据前,struts都会先调用这个方法,导致到后面共享这个ActionForm 的表单会丢失前面表单的信息。

转载于:https://my.oschina.net/line926/blog/164459

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值