什么是弹簧标签中的<form:select path>?

Shi*_*jee 14 java spring spring-mvc java-ee

有人可以告诉我,我需要在<form:select>路径属性中指定什么以及它用于什么?实际上我需要了解下拉列表中所选项目的值是如何传递给控制器​​的?

Sha*_*yam 33

假设你有一个模型(例如狗),它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>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我选择了breed属性select,因为我不希望用户键入他想要的任何品种,我希望他从列表中选择(allBreeds在这种情况下,控制器将传递给视图).

<form:select>我用path告诉弹簧选择具有绑定到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
...
}
Run Code Online (Sandbox Code Playgroud)

我希望我的回答能给你一个大致的想法.