📜  Spring MVC表单文本字段(1)

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

Spring MVC表单文本字段介绍

简介

Spring MVC 表单文本字段用于从用户那里收集一个或多个文本输入。其中包括文本框和密码框等。

Spring 官方提供了多种表单绑定方式,其中最常用的是 @ModelAttribute@RequestParam 注解,这两种注解都可以用于接收表单文本输入。

当在 Spring MVC 应用程序中处理表单时,我们需要使用表单属性绑定、表单验证和视图解析器等技术来处理表单文本字段。

表单属性绑定
使用 @ModelAttribute 注解

@ModelAttribute 注解用于将表单数据绑定到对象中。例如,以下代码将文本框的值绑定到 User 对象的属性中:

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

支持对象嵌套属性绑定

当我们需要绑定一个对象内嵌套的属性时,可以使用 . 符号对属性进行嵌套。

例如,以下代码中的 address 属性是 User 对象的嵌套属性:

public class User {
    private String name;
    private Address address;

    // getters and setters
}

public class Address {
    private String street;
    private String city;

    // getters and setters
}

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@ModelAttribute("user") User user) {
    // add new user to database
    return "redirect:/userList";
}
使用 @RequestParam 注解

@RequestParam 注解用于将表单数据绑定到简单类型参数或字符串数组参数中。

以下代码将文本框的值绑定到 name 参数中:

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@RequestParam("name") String name) {
    // add new user to database
    return "redirect:/userList";
}

以上代码的缺点是,当表单字段较多时,需要编写更多的参数。

表单验证

表单验证是一个非常重要的步骤,用于确保用户在提交表单时输入的数据是合法的。

Spring MVC 支持多种表单验证方式,其中最常用的是使用 JSR-303 标准的 Bean Validation API。

以下是一个示例:

public class User {
    @NotNull(message = "Name is required")
    private String name;

    @Email(message = "Invalid email format")
    private String email;

    // getters and setters
}

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@Valid @ModelAttribute("user") User user, BindingResult result) {
    if (result.hasErrors()) {
        return "addUser";
    }

    // add new user to database
    return "redirect:/userList";
}

上面的代码中,@Valid 注解用于指示使用 Bean Validation API 进行验证。如果验证失败,则 BindingResult 对象中包含错误信息。

视图解析器

视图解析器是 Spring MVC 支持的另一个重要功能,用于将控制器方法返回的逻辑视图名称解析为实际的视图。

以下是一个示例:

@RequestMapping(value = "/userList", method = RequestMethod.GET)
public String userList(Model model) {
    List<User> users = userService.findAll();
    model.addAttribute("users", users);
    return "userList";
}

userList 是逻辑视图名称,当这个方法返回时,Spring 会使用配置的视图解析器将 userList 解析为对应的 JSP 视图文件名。

总结

在 Spring MVC 中处理表单的过程中,表单属性绑定、表单验证和视图解析器是不可或缺的。

参考资料
Markdown 返回代码片段
# Spring MVC表单文本字段介绍

## 简介

Spring MVC 表单文本字段用于从用户那里收集一个或多个文本输入。其中包括文本框和密码框等。

Spring 官方提供了多种表单绑定方式,其中最常用的是 `@ModelAttribute` 和 `@RequestParam` 注解,这两种注解都可以用于接收表单文本输入。

当在 Spring MVC 应用程序中处理表单时,我们需要使用表单属性绑定、表单验证和视图解析器等技术来处理表单文本字段。

## 表单属性绑定

### 使用 @ModelAttribute 注解

`@ModelAttribute` 注解用于将表单数据绑定到对象中。例如,以下代码将文本框的值绑定到 `User` 对象的属性中:

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

支持对象嵌套属性绑定

当我们需要绑定一个对象内嵌套的属性时,可以使用 . 符号对属性进行嵌套。

例如,以下代码中的 address 属性是 User 对象的嵌套属性:

public class User {
    private String name;
    private Address address;

    // getters and setters
}

public class Address {
    private String street;
    private String city;

    // getters and setters
}

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@ModelAttribute("user") User user) {
    // add new user to database
    return "redirect:/userList";
}
使用 @RequestParam 注解

@RequestParam 注解用于将表单数据绑定到简单类型参数或字符串数组参数中。

以下代码将文本框的值绑定到 name 参数中:

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@RequestParam("name") String name) {
    // add new user to database
    return "redirect:/userList";
}

以上代码的缺点是,当表单字段较多时,需要编写更多的参数。

表单验证

表单验证是一个非常重要的步骤,用于确保用户在提交表单时输入的数据是合法的。

Spring MVC 支持多种表单验证方式,其中最常用的是使用 JSR-303 标准的 Bean Validation API。

以下是一个示例:

public class User {
    @NotNull(message = "Name is required")
    private String name;

    @Email(message = "Invalid email format")
    private String email;

    // getters and setters
}

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@Valid @ModelAttribute("user") User user, BindingResult result) {
    if (result.hasErrors()) {
        return "addUser";
    }

    // add new user to database
    return "redirect:/userList";
}

上面的代码中,@Valid 注解用于指示使用 Bean Validation API 进行验证。如果验证失败,则 BindingResult 对象中包含错误信息。

视图解析器

视图解析器是 Spring MVC 支持的另一个重要功能,用于将控制器方法返回的逻辑视图名称解析为实际的视图。

以下是一个示例:

@RequestMapping(value = "/userList", method = RequestMethod.GET)
public String userList(Model model) {
    List<User> users = userService.findAll();
    model.addAttribute("users", users);
    return "userList";
}

userList 是逻辑视图名称,当这个方法返回时,Spring 会使用配置的视图解析器将 userList 解析为对应的 JSP 视图文件名。

总结

在 Spring MVC 中处理表单的过程中,表单属性绑定、表单验证和视图解析器是不可或缺的。

参考资料