📜  Spring Boot 中的 @modelattribute 示例 (1)

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

Spring Boot 中的 @ModelAttribute 示例

在Spring Boot应用程序中,@ModelAttribute是一个非常有用的注解,它可以用于将方法参数绑定到模型对象中。本文将为您介绍如何使用@ModelAttribute注解,并提供一个示例来演示如何在Spring Boot应用程序中使用它。

@ModelAttribute注解

@ModelAttribute注解可以用于处理器方法参数上,用于将方法参数绑定到模型对象中。当一个请求发送到应用程序时,Spring MVC框架会自动创建一个模型对象,并在处理请求的方法中将该对象注入到方法的参数中。这使得应用程序可以访问请求的参数和容器中的其他对象。

示例

我们将创建一个用于添加和显示用户的Spring Boot应用程序。以下是应用程序的目录结构:

├─src
│  └─main
│      ├─java
│      │  └─com
│      │      └─example
│      │          └─modelattribute
│      │                  App.java
│      │                  UserController.java
│      │                  
│      └─resources
│              templates
│                  add.html
│                  index.html
│              application.properties
│              
└─pom.xml

UserController类负责接收来自请求的数据,并将其存储在User对象中。我们使用@ModelAttribute注释将表单数据与User对象绑定。

@Controller
public class UserController {

    private static List<User> userList = new ArrayList<>();

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String addUser(@ModelAttribute User user) {
        userList.add(user);
        return "redirect:/";
    }

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView index() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("index");
        modelAndView.addObject("userList", userList);
        modelAndView.addObject("user", new User());
        return modelAndView;
    }

}

我们在Thymeleaf模板中使用表单来呈现表单数据。当用户提交表单时,我们调用UserController类的addUser()方法,该方法将User对象添加到列表中。然后,我们使用redirect将用户重定向到主页。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">

<head>
    <title>Spring Boot @ModelAttribute Example</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>

<body>

<h1>User Registration Form</h1>
<form action="/add" method="post" th:object="${user}">
    Name: <input type="text" th:field="*{name}"><br>
    Email: <input type="email" th:field="*{email}"><br>
    <input type="submit" value="Submit">
</form>

<h1>User List</h1>
<table>
    <thead>
    <tr>
        <th>Name<th>
        <th>Email<th>
    </tr>
    </thead>
    <tbody>
    <tr th:each="user : ${userList}">
        <td th:text="${user.name}"/><td>
        <td th:text="${user.email}"/><td>
    </tr>
    </tbody>
</table>
</body>
</html>

首先,我们在主页中显示一个表单,用户可以在其中输入姓名和电子邮件地址。然后,我们显示一个列表,显示其已注册用户的姓名和电子邮件地址。

运行示例

您可以使用以下命令从命令行运行Spring Boot应用程序:

mvn spring-boot:run

Spring应用程序将在8080端口上运行。要访问主页,请打开Web浏览器并输入以下URL:

http://localhost:8080/
结论

@ModelAttribute注解是处理Spring Boot应用程序中表单数据的非常有用的注解。在本文中,我们为您演示了如何使用它,同时还提供了一个演示如何将表单数据与模型对象绑定的示例。