📜  Spring – MVC 表单下拉列表(1)

📅  最后修改于: 2023-12-03 14:47:34.123000             🧑  作者: Mango

Spring – MVC 表单下拉列表

在 Spring MVC 中,下拉列表是常见的表单元素之一。它允许用户从一组预定义的选项中进行选择,通常用于选择一个类别或者在另一个表单中引用一个实体。

本文介绍如何在 Spring MVC 中创建下拉列表。

准备工作

在演示之前,需要确保 Spring,Spring MVC 和 JSTL 已经配置好并正常运行。如果您还没有这些工具,请阅读我的另一篇文章Sring MVC 的入门指南

创建实体

我们将创建一个简单的实体,表示一个人的性别。这个实体只有两个属性:id 和 name。

public class Gender {
    private int id;
    private String name;

    public Gender(int id, String name) {
        this.id = id;
        this.name = name;
    }

    // Getters and setters
}
准备数据

为了演示如何创建一个下拉列表,我们需要一些预定义的选项。在我们的示例中,我们将使用一个硬编码的列表。

private List<Gender> getGenderList() {
    List<Gender> genderList = new ArrayList<>();

    genderList.add(new Gender(1, "Male"));
    genderList.add(new Gender(2, "Female"));

    return genderList;
}
创建表单

现在,我们已经有了生成下拉列表的数据,我们可以继续创建表单。

<form action="submitForm" method="POST">
    <label for="gender">Gender:</label>
    <select id="gender" name="gender">
        <c:forEach items="${genderList}" var="gender">
            <option value="${gender.id}">${gender.name}</option>
        </c:forEach>
    </select>
</form>

我们使用 select 元素创建下拉列表,并使用 options 元素添加要显示的选项。注意,我们设置了每个选项的值为该选项对应的性别 ID。

处理表单提交

现在,我们已经创建了一个漂亮的下拉列表,我们需要处理表单提交。在我们的示例中,我们将创建一个简单的处理程序,它只是打印出提交的数据。

@PostMapping("/submitForm")
public String submitForm(@RequestParam("gender") int genderId) {
    System.out.println("Selected gender ID: " + genderId);
    return "redirect:/form";
}
样例代码
@Controller
public class FormController {

    @GetMapping("/form")
    public String showForm(Model model) {
        model.addAttribute("genderList", getGenderList());
        return "form";
    }

    @PostMapping("/submitForm")
    public String submitForm(@RequestParam("gender") int genderId) {
        System.out.println("Selected gender ID: " + genderId);
        return "redirect:/form";
    }

    private List<Gender> getGenderList() {
        List<Gender> genderList = new ArrayList<>();

        genderList.add(new Gender(1, "Male"));
        genderList.add(new Gender(2, "Female"));

        return genderList;
    }

    static class Gender {
        private int id;
        private String name;

        public Gender(int id, String name) {
            this.id = id;
            this.name = name;
        }

        // Getters and setters
    }
}
<form action="submitForm" method="POST">
    <label for="gender">Gender:</label>
    <select id="gender" name="gender">
        <c:forEach items="${genderList}" var="gender">
            <option value="${gender.id}">${gender.name}</option>
        </c:forEach>
    </select>
</form>
总结

下拉列表是一个非常常见的表单元素,可用于在 Spring MVC 中选择预定义的选项。在本文中,我们演示了如何在 Spring MVC 中使用简单的硬编码选项创建下拉列表,并处理表单提交。