【问题标题】:Dynamic Form in Spring 3Spring 3 中的动态表单
【发布时间】:2011-06-05 21:15:08
【问题描述】:

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

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

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

【问题讨论】:

标签: java spring forms dynamic spring-mvc


【解决方案1】:

我的问题是缺乏经验。

我最终得到了这个(为了解释而简化了很多):

我的 bean 有以下字段:String questionType、String questionText、String answer。 我的 bean 列表是 List questions。

当我从 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 之旅开始时遇到困难的人。

【讨论】:

    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 2018-01-30
    • 2013-08-31
    • 2017-12-03
    • 1970-01-01
    • 2012-03-26
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多