我们使用的是struts 1.2.2,这里有一个情况。 所以我们有2个窗体FormA和FormB。 我们还有2个ActionA和ActionB操作。struts 1.2 - 将一个值从一个动作传递到另一个动作
现在ActionA在调用时获取FormA作为提交的bean。它执行所有处理,保存表单,创建OrderId,如果成功则转发给ActionB。 ActionB然后根据OrderId填充FormB,然后转发到下一个jsp。
我们不希望2行为共享表单,因为内容非常不同,我们希望表单仅表示它在jsp页面上表示的内容。同样在每个页面上,我们都将内容保存在Db上。该流程有5页,一页可以在2页之后离开 - 再次返回并从第1页开始。但是页面1和页面2应从数据库中检索数据并显示。因此,如果存在orderID,我们通过从数据库中获取数据来基于该orderId填充表单。
但是我没有找到一个简单的方法将这个orderId从一个动作传递给另一个动作。
我不能在ActionA的末尾使用request.setAttribute()
,因为控件到达ActionB时它现在有一个全新的请求对象。我猜测从一个动作到另一个动作发生的转发请求会被刷新。但是,如果它转发给jsp,请求将被保留。
不想将订单存储在会话session.setAttribute()
有人可能试图为书签的网址,然后该网页将只需拿起上次存储的OrderId会话,并尝试来处理。
也没有办法,我们可以把它放在formbeans,因为这是不共享。
一种选择是将URL作为参数传递给参数,例如, ActionB?OrderId = 89。然而,不利的一点是有人可以更改URL中的orderId并尝试为该随机orderId提取数据。虽然我们可以随时进行检查以防止某人未被授权查看属于另一位客户的订单,但此时这是一个复杂的过程。同样在Struts 1.2.2中,我想我将不得不以编程方式创建一个新的ActionForward对象,然后在当前路径末尾显式附加“?OrderId = 89”。
任何帮助朋友?