3

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}するだけで、質問オブジェクトの正しいテキストが表示されます。代替案についても同じことが言えます。

フォームをオブジェクトに正しくバインドするにはどうすればよいですか?

さらに、他のオブジェクトのリストを含むオブジェクトを保存すると、リスト自体がデータベースに保存されますか?

4

1 に答える 1

2

リストをフィールドとして単純なオブジェクトにラップする必要がある場合があります。

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>
于 2011-08-17T02:59:54.973 に答える