春季动态表格3

时间:2011-01-08 20:57:03

标签: java spring forms dynamic spring-mvc

我有自定义的Question对象,我将其呈现为html表单元素。我希望能够动态创建这些对象并从中生成动态html表单。问题对象具有String属性来保存表单中的结果。我怎样才能让它在Spring中运行?

我的工作方式(看起来不太理想),是我有一个bean来支持自定义表单。这个bean有两个属性:一个用于存放要显示的问题的List和一个用于保存结果的List。 JSP有一个标签,告诉它使用bean作为模型属性。然后我有一个自定义JSP标记,它接受List并将它们呈现为表单元素。元素被赋予answer [n]的ID,Spring将把表单的结果放入支持bean的List属性中。

有谁知道我怎么能做得更好?

1 个答案:

答案 0 :(得分:1)

我的问题是缺乏经验。

我最终得到了这个(解释得非常简化):

我的bean有以下字段:String questionType,String questionText,String answer。 我的bean列表是List问题。

当我从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之旅中磕磕绊绊。