Связывание нескольких объектов в форме Spring - PullRequest
3 голосов
/ 28 марта 2011

У меня проблемы с правильным отображением JSP.Я собираюсь отправить Список, содержащий вопросы, и каждый объект вопроса представляет собой текстовое поле и Список с альтернативами.

Мое намерение состоит в том, чтобы иметь возможность редактировать несколько вопросов (оба для возможности редактированиятекст / название вопроса и отредактируйте содержащие альтернативы).

Мой вспомогательный объект сейчас отправляет вопрос списка.

Вот мой JSP, который не работает с недопустимым свойством класса бина.

        <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}, он показывает правильный текст для объекта вопроса.То же самое касается альтернативы.

Что я могу сделать, чтобы правильно связать форму с объектами?

Кроме того, когда я сохраняю объект, который содержит список других объектов, будет ли сохранен списоксам в базе?

1 Ответ

2 голосов
/ 17 августа 2011

Вам может понадобиться обернуть ваш Список в простой объект со списком в виде поля:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...