2013-06-11 3 views
0

Обычно я использую аннотацию @modelattribute для привязки значений форм к bean-компоненту в следующей процедуре.использование modelattribute в теге формы jsp

в Jsp

<form:form commandname="test" ../> 

в классе Java

@modelattribute("test") 
public Test commandobject() 
{ 
return new test(); 
} 

недавно я наткнулся на фрагмент, где в они используют modelattribute вместо имя_команды в JSP, и они не создают какой-либо метод для создания object.wheater все это будет заботиться по структуре из-за аннотации изменения? пожалуйста, бросьте немного света на это.

ответ

1

При использовании метода @ModelAttribute, как и в вашем примере, оно указывает Spring, что если этот класс не существует в Модели, он должен создать его и поместить туда. Он позволяет иметь значения по умолчанию в объекте модели. Если вы связали это с аннотацией @SessionAttributes на контроллере, он расширит эту функцию, чтобы гарантировать, что объект будет помещен в сеанс, как только будет удален контроллер.

Атрибуты commandName и modelAttribute в теге form:form выполняют в первую очередь то же самое, что и для сопоставления полей формы с объектом какого-либо типа в контроллере. Я считаю, что предпочтительным является modelAttribute, а commandName только для обратной совместимости.

+0

Это указывает весне, что если этот класс не существует в Модели, он должен создать один и поместить его туда? вы можете объяснить это заявление. – user2390827

+0

Аннотации ModelAttribute, чтобы процитировать JavaDoc, используемый для «[привязки] параметра или метода метода к значению именованной модели, отображаемому в веб-представлении». Он может использоваться в параметре для метода обработчика контроллера или для метода, который не принимает никаких аргументов, но возвращает экземпляр указанного значения атрибута модели. Пример можно найти здесь: http://www.mkyong.com/spring-mvc/spring-mvc-form-handling-annotation-example/ – CodeChimp

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