Wiosną 3 widziałem dwa różne atrybuty w tagu formularza w jsp
<form:form method="post" modelAttribute="login">
w tym przypadku atrybut modelAttribute jest nazwą obiektu formularza, którego właściwości są używane do wypełniania formularza. I użyłem go do wysłania formularza i kontrolera, którego używałem @ModelAttribute
do przechwytywania wartości, wywoływania walidatora, stosowania logiki biznesowej. Tutaj wszystko wporządku. Teraz
<form:form method="post" commandName="login">
Czego oczekuje ten atrybut, czy jest to również obiekt formularza, którego właściwości zamierzamy wypełnić?
forms
spring-mvc
modelattribute
Pulkit
źródło
źródło
<tag-name>Tag
. Aby uzyskać w pełni kwalifikowaną nazwę klasy, otwórz bibliotekę (.jar
) zawierającą znacznik,spring-web
w tym przypadku. PoniżejMETA-INF
znajdzieszspring-form.tld
. Będzie mieć<tag>
wpisform
z<tag-class>
oorg.springframework.web.servlet.tags.form.FormTag
.OLD WAY = nazwa_polecenia
... <spring:url value="/manage/add.do" var="action" /> <form:form action="${action}" commandName="employee"> <div> <table> ....
NOWY SPOSÓB = modelAttribute
.. <spring:url value="/manage/add.do" var="action" /> <form:form action="${action}" modelAttribute="employee"> <div> <table> ..
źródło
Miałem to samo pytanie jakiś czas temu, nie pamiętam dokładnych różnic, ale z badań ustaliłem, że
commandName
był to stary sposób robienia tego i w nowych aplikacjach powinieneś używaćmodelAttribute
źródło
nazwa_polecenia = nazwa zmiennej w zakresie żądania lub zasięgu sesji, która zawiera informacje o tym formularzu lub jest to model dla tego widoku. Powinien być.
źródło
W konfiguracji opartej na XML użyjemy klasy poleceń do przekazania obiektu między kontrolerem a widokami. Teraz w adnotacji używamy
modelattribute
.źródło