📅  最后修改于: 2023-12-03 14:47:33.872000             🧑  作者: Mango
Spring MVC 表单文本字段用于从用户那里收集一个或多个文本输入。其中包括文本框和密码框等。
Spring 官方提供了多种表单绑定方式,其中最常用的是 @ModelAttribute
和 @RequestParam
注解,这两种注解都可以用于接收表单文本输入。
当在 Spring MVC 应用程序中处理表单时,我们需要使用表单属性绑定、表单验证和视图解析器等技术来处理表单文本字段。
@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
注解用于将表单数据绑定到简单类型参数或字符串数组参数中。
以下代码将文本框的值绑定到 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 中处理表单的过程中,表单属性绑定、表单验证和视图解析器是不可或缺的。
# 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
注解用于将表单数据绑定到简单类型参数或字符串数组参数中。
以下代码将文本框的值绑定到 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 中处理表单的过程中,表单属性绑定、表单验证和视图解析器是不可或缺的。