Что такое <form: select path> в теге spring, который используется?

Может кто-нибудь скажет мне, что мне нужно указать в атрибуте пути <form:select> и для чего он используется? на самом деле мне нужно понять, как значение выбранного элемента из выпадающего списка передается на контроллер?

Ответ 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
...
}

Надеюсь, мой ответ дал вам общую идею.