Spring 3中的动态表单
问题内容:
我有自定义的Question对象,可以将其渲染为html表单元素。我希望能够动态创建这些对象并从它们生成动态的html表单。问题对象具有String属性,用于保存表单的结果。我怎样才能在spring工作呢?
我使用它的方式(这似乎并不理想)是我有一个支持自定义表单的bean。该bean具有两个属性:一个用于保存要显示的问题的列表和一个用于保存结果的列表。JSP有一个标签,告诉它使用Bean作为模型属性。然后,我有一个自定义JSP标记,该标记采用List并将其呈现为表单元素。这些元素被赋予了answer
[n]的ID,Spring会将表单的结果放入支持bean的List属性中。
有谁知道我能做得更好吗?
问题答案:
我的问题是缺乏经验。
我最终得到了这一结果(为解释而进行了简化):
我的bean具有以下字段:字符串问题类型,字符串问题文本,字符串答案。我的豆子列表是列出问题。
当我从bean列表中生成HTML时,我只需要使每个表单元素的id / name与列表的名称以及bean在列表中的位置匹配即可。
因此,如果我的问题清单如下所示:
[0] {questionType="TEXT", questionText="What is your name?", answerText=null}
[1] {questionType="TEXT", questionText="What is your quest?", answerText=null}
[2] {questionType="TEXT", questionText="What is your favorite color?", answerText=null}
然后,当我遍历列表时,需要生成以下HTML:
<div class="question">
<p class="questionText">What is your name?</p>
<input type="text" id="questions[0].answerText" name="questions[0].answerText" />
</div>
<div class="question">
<p class="questionText">What is your quest?</p>
<input type="text" id="questions[1].answerText" name="questions[1].answerText" />
</div>
<div class="question">
<p class="questionText">What is your favorite color?</p>
<input type="text" id="questions[2].answerText" name="questions[2].answerText" />
</div>
提交表单后,Spring将找到这些bean,并使用表单数据在其上调用setAnswerText(String value)。
我希望这有助于其他人在Spring MVC旅程的开始时绊脚石。