Может кто-нибудь скажет мне, что мне нужно указать в атрибуте пути <form:select>
и для чего он используется? на самом деле мне нужно понять, как значение выбранного элемента из выпадающего списка передается на контроллер?
Что такое <form: select path> в теге spring, который используется?
Ответ 1
Скажем, у вас есть модель (например, Dog), Dog
имеет различные атрибуты:
имя
возраст
породы
если вы хотите создать простую форму для добавления/редактирования собаки, вы должны использовать что-то похожее на это:
<form:form action="/saveDog" modelAttribute="myDog">
<form:input path="name"></form:input>
<form:input path="age"></form:input>
<form:select path="breed">
<form:options items="${allBreeds}" itemValue="breedId" itemLabel="breedName" />
</form:select>
</form:form>
Как вы можете видеть, я выбрал свойство breed
как select
, потому что я не хочу, чтобы пользователь вводил любую породу, которую он хочет, я хотите, чтобы он выбрал из списка (allBreeds
в этом случае, который контроллер перейдет к представлению).
В <form:select>
я использовал path
, чтобы сообщить spring, что select должен привязываться к breed
модели Dog
.
Я также использовал <form:options>
, чтобы заполнить выбор всеми параметрами, доступными для атрибута breed
.
<form:select>
является интеллектуальным, и если он работает над заполненной моделью (т.е. Dog
, полученной из базы данных или значением по умолчанию по умолчанию) - он автоматически выберет "правильный" вариант из списка.
В этом случае контроллер будет выглядеть примерно так:
@RequestMapping(value="/saveDog")
public String saveDog(@ModelAttribute("myDog") Dog dogFromForm){
//dogFromForm.getBreed() will give you the selected breed from the <form:select
...
//do stuff
...
}
Надеюсь, мой ответ дал вам общую идею.