📜  Spring MVC-RadioButtons示例(1)

📅  最后修改于: 2023-12-03 15:35:03.459000             🧑  作者: Mango

Spring MVC-Radio Buttons示例

在编写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应用程序。