3

我必须有 4 个对象、组、部分和问题及其选项。每个组都有不同的部分,部分有多个问题,问题有选项。现在我必须设计表单输入系统,以便逐步覆盖每个组和部分。我在spring mvc中做这一切。

你能告诉我一个方法,我该如何解决这个问题?

4

1 回答 1

2

由于简单的列表绑定,您肯定可以在 Spring MVC 中做到这一点。

Spring MVC 提供了很大的自由度,所以基本上如果你只使用这个框架,你将不得不从头开始想出一个解决方案。
这是一个用例和一个解决方案。实施起来有点困难,因为它是从头开始的。随意调整它以适应您的特定需求,添加您想要的任何花哨的 UI 框架,但您应该有一个大致的想法。您可以跳到第三部分快速回答。

假设您想在一个页面中创建/编辑一个组:

  • 你想编辑/添加部分到组
  • 您想在任何部分编辑/添加问题
  • 您想编辑/添加任何问题的选项

一、页面设计:

  1. 您有一个带有一个大表单的 JSP 组页面(这只是一个示例)
  2. 会有按钮来添加嵌套的东西。单击时,一些 javascript 将显示一个空白表单,允许包含这些东西的信息。这个空白表单本身将有按钮来添加嵌套嵌套的东西,等等(直到这些东西是一个选项)。
  3. 对于您想要显示/编辑的现有内容,设计是相同的,除了表单不会是空白的
  4. 您可以判断您是在创建还是编辑当前组(页面上下文或 javascript/html 技巧)。
  5. 借助一些 javascript/jQuery,您可以在组内“拖放”现有部分的列表

二、代码设计:

  1. 你有一个对应于 JSP 的 GroupController
  2. Group 对象有一个List<Section> sections属性,Section 对象有一个List<Questions> questions属性,等等。
  3. 你有方法 createGroup 和 editGroup
  4. 在提交 JSP 表单并调用 createGroup 或 editGroup 时,您可以知道该组的提交元素是否已经存在,因此您可以决定在数据库中添加或编辑/更新它们。所有这些逻辑都可以在另一个类中完成,例如 Spring 服务。
  5. 您始终提供现有部分的可能列表(通过在两种方法中将此列表添加到模型中,或者更好的是,通过使用 @ModelAttribute 注释的单个方法)。这个列表可以在另一个类中计算(一个服务/DAO/两者都在最后挖掘数据库)。

三、魔术:将 JSP 表单与 Java 控制器绑定:

在页面中,您将拥有一个<form:form commandName="group">,而在​​控制器方法参数中,您将拥有一个@ModelAttribute("group") Group group.

现在,要提交第一个选项的名称,您将在 JSP 中有这个:

<form:input path="sections[0].questions[0].options[0].name" />

(或某些 javascript 生成的 html 中的等价物)。

于 2012-09-17T22:32:06.607 回答