Struts2向导与范围模型驱动

时间:2011-03-19 23:41:13

标签: model struts2 wizard

我是Struts2的新手,想出了一个实现3页向导的简洁方法,包含2个表单和4个bean。

在开始提问之前,让我以一般方式提出我的用例,而不涉及任何实体细节,以保持简单。以下是我的用例:

  1. JSP1的Form1包含输入字段。
  2. Form1提交给Action1。
  3. Form1的字段值通过请求参数绑定填充到Action1中的Bean1。
  4. Action1验证Bean1中的字段,如果验证失败,则在Form1字段和错误消息中显示带有捕获的Bean1值的JSP1。
  5. 如果验证成功,则Bean1用于检索Bean2,结果将定向到JSP2。
  6. JSP2显示Bean2中的数据以及Form2中的其他输入字段。
  7. Form2提交给Action2
  8. Form2的字段值通过请求参数绑定填充到Action2中的Bean3。
  9. Action2验证Bean3中的字段,如果验证失败,则在Form2字段和错误消息以及Beans2数据中显示带有捕获的Bean3值的JSP2!
  10. 如果验证成功,Bean3用于填充Bean4,结果将定向到JSP3。
  11. JSP3在Bean4中显示数据
  12. 在这篇文章之前,我已经在书中阅读了这个主题:Struts2 in Action和Practical Struts2 Web2.0项目。我使用通配符探索了范围拦截器,范围模型驱动的操作和使用方法调用的单个操作的选项。我不期待以Spring WebFlow等形式添加其他依赖项。

    我正在尝试使用具有会话范围的ScopedModelDriven操作来实现向导。我的设计目标是为每个操作定义明确的bean,而不是为所有操作都使用单个bean。

    在有关向导的问题之前,我有一个关于操作中bean范围的基本问题。 Action1在值堆栈中应该有Bean1有两个原因:1。在提交时绑定Form1中的输入值; 2.如果验证失败,则显示Form1值。 Action1还应在值堆栈中具有Bean2,以便在JSP2中显示结果。

    对于输入页面(Bean1)和结果页面(Bean2),操作是否总是有字段(因此它们在ValueStack中)?如果实现ScopedModelDriven哪个bean将成为我的模型?

    同样,对于Action2,Bean2,Bean3和Bean4需要在ValueStack中。

    一个强力解决方案是组合Bean1,Bean2,Bean3和Bean4中的所有字段,并且只有一个Bean用于整个向导!我不想那样做,因为所有这些bean都有特定的功能。

    我相信我没有把这个概念弄好。应该有一种流畅的方式使用会话范围使用这些原子bean实现此向导。

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

可能为时已晚,但您只需使用Struts2 Conversation plugin

即可实现目标