@ModelAttribute应用
首先说明一下,被 @ModelAttribute 注释的方法会在Controller每个方法执行之前都执行,因此对于一个Controller中包含多个URL的时候,要谨慎使用。
举例
注册账号时,账号密码必须写,但是个人姓名不一定会填写,而我们在后台录入数据时又需要用到姓名,所以这时候就能应用到
前端代码,account.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
注册用户 <br>
<form action="/ma/save" method="post">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit">
</form>
</body>
</html>
方式一:@ModelAttribute用在方法上
后台代码
@Controller
@RequestMapping("/ma")
public class ModelAttributeController {
@ModelAttribute
public Account checkAccountInfo(Account account){
if(null == account.getName() || "".equals(account.getName())){
account.setName(account.getUsername());
System.out.println("检查用户信息,如果没提交姓名,默认为用户名");
}
return account;
}
@RequestMapping("/save")
public String saveAccount(Account account){
System.out.println("展示用户信息");
System.out.println(account);
return "success";
}
}
配置详情看 ModelAttribute注解应用在方法上.jpg
方式二:@ModelAttribute用在参数上
后台代码
@Controller
@RequestMapping("/ma")
public class ModelAttributeController {
@ModelAttribute
public void checkAccountInfo(Account account, Map<String,Account> map){
if(null == account.getName() || "".equals(account.getName())){
account.setName(account.getUsername());
System.out.println("检查用户信息,如果没提交姓名,默认为用户名");
}
map.put("account",account);
}
@RequestMapping("/save")
public String saveAccount(@ModelAttribute("account")Account account){
System.out.println("展示用户信息");
System.out.println(account);
return "success";
}
}
配置详情看 ModelAttribute注解应用在参数上.jpg