📅  最后修改于: 2023-12-03 15:35:03.459000             🧑  作者: Mango
在编写Web应用程序时,单选框是一个常见的UI控件,它允许用户从一个固定的列表中选择一个选项。Spring MVC提供了很多简单的方法来实现单选框,让我们看一个Spring MVC-Radio Buttons示例。
首先,我们需要在Maven配置中添加Spring MVC依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
我们需要定义一个模型类来保存单选框选项。例如,我们可以定义一个名为Gender的枚举类,该类表示性别:
public enum Gender {
MALE, FEMALE
}
我们需要创建一个控制器类来处理用户的请求,渲染包含单选框的视图。在这个控制器类中,我们需要两个方法:一个方法用于向模型添加可用的选项,另一个方法用于处理用户提交的表单。
@Controller
public class GenderController {
@ModelAttribute("genders")
public Gender[] genders() {
return Gender.values();
}
@PostMapping("/submit")
public String processForm(@RequestParam("gender") Gender gender, Model model) {
model.addAttribute("gender", gender);
return "result";
}
}
在上面的代码中,参数注释@ModelAttribute("genders")告诉Spring将Gender.values()返回的值添加到模型中,并使用键"genders"来引用它。@PostMapping("/submit")注释表示该方法将处理用户提交的POST请求,并将HTTP参数"gender"绑定到gender参数中。处理方法将gender添加到模型中,并返回"result"字符串,表示视图名称。
我们需要创建一个包含单选框的表单视图。在这个示例中,我们将使用Thymeleaf模板引擎来渲染视图。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>Gender Selection</title>
</head>
<body>
<form method="POST" action="/submit">
<fieldset>
<legend>Select your gender:</legend>
<div th:each="gender : ${genders}">
<label>
<input type="radio" th:name="gender" th:value="${gender}" th:checked="${gender == 'MALE'}"/>
<span th:text="${gender}"></span>
</label>
</div>
</fieldset>
<button type="submit">Submit</button>
</form>
</body>
</html>
在上面的代码中,我们使用Thymeleaf模板引擎来遍历"Genders"数组,并将每个选项呈现为单选框。我们使用${gender}表达式来获取Gender枚举的文本表示,并使用th:name="gender"属性将所有单选框分组。我们使用th:checked="${gender == 'MALE'}"属性来将第一个单选框设置为选中状态。
我们还需要创建一个结果视图,该视图将显示用户选择的性别。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>Result</title>
</head>
<body>
<p>Your gender is <span th:text="${gender.name()}"></span>.</p>
<a href="/">Back to selection</a>
</body>
</html>
在上面的代码中,我们使用${gender.name()}表达式来获取选定性别的字符串表示,并将其显示在结果页面中。
这个Spring MVC-Radio Buttons示例演示了如何使用Spring MVC和Thymeleaf模板引擎来呈现单选框并处理用户提交的表单。通过在模型类,控制器类和视图中定义清晰的抽象,我们可以轻松地扩展这种功能,并将其用于各种Web应用程序。