【问题标题】:Binding multiple objects in a Spring form在 Spring 表单中绑定多个对象
【发布时间】:2011-03-28 14:10:53
【问题描述】:

我无法正确获取 JSP 视图。我打算发送一个包含问题的列表,每个问题对象是一个文本字段和一个带有备选方案的列表。

我的目的是能够编辑多个问题(既能够编辑问题的文本/名称并编辑包含的替代项)。

我的支持对象现在正在发送一个列表问题。

这是我的 JSP,它因 bean 类的无效属性而失败。

        <form:form commandName="question">
        <form:errors path="*">
            <fieldset class="stdframe">
                <legend>Question</legend>
            </fieldset>
        </form:errors>

        <div class="stdframe">
            <c:forEach var="q" items = "${question}" varStatus = "s">           
                <p><b>Question:</b></p>
                <p><form:input size="67" path="${q.text}"/></p>
                <br/>
                ${q.text}
                <ul>
                    <c:forEach var="alternative" items = "${q.alternatives}" varStatus = "t">
                        ${alternative.text}
                        <li><form:input path = "${alternative[$t.index].text}" /></li>
                    </c:forEach>
                </ul>
                <br/>
            </c:forEach>
                <input type="submit" class="submit" value="Save" />
                <input type="button" class="button" onClick="back()" value="Back"/>
        </div>
</form:form>

${q.text}${q[$s.index].text} 我都试过了。当我打印${q.text} 时,它会显示问题对象的正确文本。替代品也是如此。

如何才能将表单正确绑定到对象?

此外,当我存储一个包含其他对象列表的对象时,该列表是否会自行存储在数据库中?

【问题讨论】:

  • 问题似乎是问题的绑定。我无法获得正确的路径。我希望每个问题对象都绑定在文本字段中。当我只发送一个 Question 对象并且路径是“文本”时它可以工作,但当我发送 List 时它将不起作用。

标签: spring spring-form


【解决方案1】:

您可能需要将 List 包装在一个简单的对象中,并将 List 作为字段:

class MyListWrapper { List questions; } // etc.

如果你使用它作为你的命令/表单对象,你应该能够在 JSP 中做这样的事情:

<form:form commandName="wrapper">
// ... 
        <c:forEach var="q" items = "${wrapper.questions}" varStatus = "s">
           <p><b>Question:</b></p>
            <p><form:input size="67" path="questions[${s.index}].text"/></p>
// ... 
               <c:forEach var="alternative" items = "${q.alternatives}" varStatus = "t">
                    ${alternative.text}
                    <li><form:input path = "questions[${s.index}].alternatives[${t.index}].text" /></li>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    相关资源
    最近更新 更多