Session 在struts 1.x中定义具有会话范围的表单bean的缺点
在struts 1.x中使用会话范围的表单bean的主要缺点是什么?如果表单包含从复选框填充的属性,则需要实现Session 在struts 1.x中定义具有会话范围的表单bean的缺点,session,struts,struts-1,Session,Struts,Struts 1,在struts 1.x中使用会话范围的表单bean的主要缺点是什么?如果表单包含从复选框填充的属性,则需要实现reset()。您不需要它来请求作用域表单bean 如果第二次显示创建表单,则需要将表单重置为其默认值,否则创建表单将重新显示来自上次创建/更新对象的数据 不能有两个使用同一窗体的浏览器选项卡或框架,因为它们将相互依靠 默认情况下,表单bean应该在请求范围内。只需尝试使用这两个范围,并为自己选择一个首选范围。但我应该说,当您使用持久对象(以及像Hibernate这样的ORM工具)时,有
reset()
。您不需要它来请求作用域表单bean
如果第二次显示创建表单,则需要将表单重置为其默认值,否则创建表单将重新显示来自上次创建/更新对象的数据
不能有两个使用同一窗体的浏览器选项卡或框架,因为它们将相互依靠
默认情况下,表单bean应该在请求范围内。只需尝试使用这两个范围,并为自己选择一个首选范围。但我应该说,当您使用持久对象(以及像Hibernate这样的ORM工具)时,有一点差别,这仅仅是因为属性在请求之间持久化在数据库中
(当然,您可以在表单bean中为整个层次结构的每个属性创建getter/setter,但这很繁琐,并且会使进一步的开发复杂化)。对于创建,您只需在表单bean中创建新的空purchase
对象,对于版本,您将从数据库中加载现有的purchase
(编辑请求将包含要更改的对象的某些标识符)。范围不再重要操作(如果我们谈论的是Struts 1)应该是线程安全的,并且您的业务逻辑应该准备好并发/冲突的更新(解决同步问题、锁定对象、合并/覆盖/拒绝更新等)。如果您正在开发多用户应用程序,当两个不同的用户希望同时更改同一个对象时,也可能发生这种情况。同样,bean范围与整个问题相比并不重要
正如您所看到的,会话范围的表单bean只有一个缺点,它只与严重的设计缺陷(来自一个用户的重叠更新请求)有关。谢谢。我有一个两页的表单(第二个表单由json文本自动生成)。如果我不使用会话表单bean,我如何将bean传递到第二个页面?使用隐藏字段,或者通过将bean存储在会话中的UUID下,并将UUID作为隐藏字段传递。在第一种情况下,隐藏字段是否表示第二个表单bean的属性?是的,因为它是第二个表单bean,将使用s隐藏字段。我在将bean作为第二个表单bean的属性传递时遇到了一些问题。您能看看这个问题吗?