对于一个ActionForm,有一个属性可选,也就是scope,默认选项为session。
scope这个属性的作用在于,对于每次生成的ActionForm,struts会把它放到request或者session中,以便在视图层能够取得一些数据信息。
需要注意的是session级的ActionForm,一般我们用的都是request级别的,但是当我们需要利用到多个表单内容的话,可能就要用到session级了。当我们多次重复提交表单的时候,有时候会由于某些字段的特殊性造成数据的混乱,如: 原先在不同表单里选择了多个属性,其中包含复选框这个输入的。 下次我们重新提交表单的时候,如果是空选的话,其他属性会被覆盖掉(涉及到数据的收集部分),但是如复选框的信息是不会被覆盖的,空选就代表没有这个属性。所以在后来的表单中还是会残留着前一次表单中复选框的内容。
解决方案:具体看你操作流程,一般都是在最起先的表单的Action里手动进行一些reset的工作。 有些人可能会认为可以采用ActionForm中的reset()方法,遗憾的是,在每次收集数据前,struts都会先调用这个方法,导致到后面共享这个ActionForm 的表单会丢失前面表单的信息。
本文详细解释了Struts框架中ActionForm的scope属性作用,以及如何在多次提交表单时解决数据混乱的问题。通过手动在表单Action中进行reset工作,防止数据覆盖,确保前后表单数据一致性。


被折叠的 条评论
为什么被折叠?



