2010-06-25 3 views
4

Я работаю с Spring MVC 2.5.Имея несколько форм на пружине MVC

Зачастую, я использую только одну форму во всех своих JSP. Теперь мне нужно добавить другую форму в тот же JSP.

Мой вопрос: будет ли Spring MVC поддерживать тот же метод жизненного цикла, какая бы форма я ни отправил?

Я имею в виду, что те же привязки данных, валидация, обработка ошибок, контроллер формы и т. Д.?

<div> 
    <form:form method="post" commandName="station"> 

    </form> 
</div> 

<div> 
    <form:form method="post" commandName="fields"> 

    </form> 
</div> 
+0

Вы используете аннотированные контроллеры или «SimpleFormController» старого стиля? – skaffman

+0

Если какой-либо ответ в полной мере соответствует вашим потребностям, отметьте его как принятый. Спасибо! –

+0

@skaffman: Я использую расширение старой школы для simpleformcontroller, а не аннотированное. @Arthur: Конечно, я помечаю его, как только я проясню некоторые вещи. Спасибо. =) –

ответ

3

контроллеры старого стиля, которые вы используете могут поддерживать только одну команду объекта, и, следовательно, только одну форму, в то время. @ Ответ Артура показывает, что вы не можете поместить обе формы на одну страницу, потому что любой данный контроллер будет поставлять только один объект формы, вы никогда не получите оба активных одновременно.

Если вы хотите это сделать, вам придется прекратить использование старых контроллеров (которые устаревают в Spring 2.5 и устарели в Spring 3) и используют аннотированные контроллеры, которые намного более гибкие , Вы можете смешивать свои формы так же сложно, как вам хочется.

+4

Можете ли вы привести пример о том, как это сделать и, например, есть несколько форм ввода для создания объектов на одной странице? – Czar

3

Spring SimpleFormController поддерживает только один объект Command. Поэтому, если вы хотите использовать две различные формы Spring в том же JSP, вам нужно создать два SimpleFormController. И внутри JSP, выполните следующие действия, чтобы избежать некоторым исключением

<c:if test="${not empty station}"> 
    <div> 
     <form:form method="post" commandName="station"> 

     </form> 
    </div> 
</c:if> 

<c:if test="${not empty fields}"> 
    <div> 
     <form:form method="post" commandName="fields"> 

     </form> 
    </div> 
</c:if> 
+0

Hi Arthur, Просто быть любопытным, зачем нужна проверка if на командных объектах? Благодарю. –

+0

@Mark Estrada Поскольку Spring form Taglib ** будет оценивать команду, предоставленную вами непосредственно ** Если команда не может быть оценена, Spring выведет какое-то исключение (нет имени команды underblah, blah, blah ...). Это объясняет, почему вы должны использовать

Смежные вопросы