Динамическая форма весной 3 - PullRequest
0 голосов
/ 08 января 2011

У меня есть пользовательские объекты Question, которые я рендую в html-элементы формы.Я хочу иметь возможность динамически создавать эти объекты и генерировать динамическую HTML-форму из них.Объект вопроса имеет свойство String для хранения результата из формы.Как я могу заставить это работать весной?

То, как у меня это работает (что не кажется идеальным), это то, что у меня есть компонент для поддержки пользовательской формы.Этот компонент имеет два свойства: список для хранения вопросов, которые будут отображаться, и список для хранения результатов.JSP имеет тег, который говорит ему использовать бин в качестве атрибута модели.Затем у меня есть пользовательский тег JSP, который берет список и отображает их в элементы формы.Элементам присваиваются идентификаторы ответа [n], и Spring помещает результаты формы в свойство List в компоненте поддержки.

Кто-нибудь знает, как мне лучше это сделать?

1 Ответ

1 голос
/ 01 апреля 2011

Моей проблемой было отсутствие опыта.

Я закончил с этим (очень упрощенным для объяснения):

У моего компонента есть следующие поля: String questionType, String questionText, String answer,Мой список bean-компонентов: List questions.

Когда я генерирую HTML из списка bean-компонентов, мне просто нужно, чтобы идентификатор / имя каждого элемента формы соответствовал названию списка и позиции.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) для них с данными формы.

Надеюсь, это поможет кому-то еще спотыкаться в начале ихВесеннее путешествие MVC.

...