欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【SpringMVC】常用注解:@ModelAttribute

【SpringMVC】常用注解:@ModelAttribute

2025/3/17 2:25:44 来源:https://blog.csdn.net/L3526581402/article/details/146284045  浏览:    关键词:【SpringMVC】常用注解:@ModelAttribute

1.作用

该注解是在SpringMVC4.3版本后新加入的。它可以修饰方法和参数。出现在方法上,表示当前方法会在控制器的方法之前执行。它可以修饰 没有返回值的方法,也可以修饰没有返回值的方法。它修饰参数,获取指定 的数据给参数赋值。

当表单提交的不是完整的实体类型数据时,保证没有提交数据的 字段使用数据库对象原来的数据。

例如:我们在编辑一个用户时,用户有一个创建信息的字段,该字段的值是不 允许被修改的。在提交表单数据是肯定没有此字段的内容,一旦更新会把该字段 的内容设置为null。此时就可以使用此注解解决问题。

2.属性

value:用于获取数据的key。可以是POJO属性的名称,也可以是Map结构的key

3.示例

定义POJO

 public class Student {private String username;private String password;private Integer age;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"username='" + username + '\'' +", password='" + password + '\'' +", age=" + age +'}';}
}

定义表单

<form action="demo1/showUser" method="post">
姓名: <input type="text" name="username"><br>
年龄: <input type="text" name="age"><br><input type="submit" value="保存"></form>

这个表单中只提交了两个字段,还有password字段没有提交

定义控制器方法(ModelAttribute注解修饰的方法带返回值)

 @ModelAttributepublic Student showModel(String username,Integer age){System.out.println("用户名:" + username + "年龄" + age);Student student = new Student();student.setUsername(username);student.setAge(18);//模拟根据用户名查询从数据表查询到了一个用户信息
student.setPassword("admin");System.out.println("showModel方法执行了.....");return student;}@RequestMapping("showUser")public String showUser(Student student){System.out.println("showUser方法执行了.....");System.out.println(student);return "success";}

最终输出的User有password的值

定义控制器方法(ModelAttribute注解修饰的方法也可以不带返回值)

@ModelAttributepublic void showModel(String username, Integer age, Map<String, Object> map) {System.out.println("用户名:" + username + "年龄" + age);Student student = new Student();student.setUsername(username);student.setAge(18);student.setPassword("admin"); // 模拟根据用户名查询从数据表查询到用户信息System.out.println("showModel方法执行了.....");map.put("student", student);}@RequestMapping("showUser")public String showUser(@ModelAttribute("student") Student student) {System.out.println("showUser方法执行了.....");System.out.println(student);return "success";}

效果也是一样的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词