Struts 中scope 为 session和request 的ActionForm

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

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

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

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

你可能感兴趣的:(struts,form,checkbox,actionFrom)