SpringMVC(十七-二十) ModelAttribute 注解
有点难理解。
修饰方法是表示在该控制器的所有目标方法执行前都执行该modelattribute注解的方法。
修饰参数是表示什么?修饰参数时@modelattributes(value="xxxx") User user 中的value值需要和@modelattribute修改的方法加入的键的值一致。
Controller Code:

package com.tiekui.springmvc.handlers; import java.util.Map; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import com.tiekui.springmvc.pojo.Address;
import com.tiekui.springmvc.pojo.User;
import com.tiekui.springmvc.pojo.UserNew; @Controller
public class ModelAttributes { @RequestMapping("testModelAttribute")
public String targetMethod(UserNew user){
System.out.println("Target method" + user);
return "afterModelAttributes";
} @ModelAttribute
public void getuser(@RequestParam(value="id") String id,Map<String, UserNew> map) { if ((id != null)) {
UserNew user = new UserNew("tiekui","1234","zhoutiekui@huawei.com",30,1, new Address("guangzhou", "zhenzhen"));
System.out.println("Get an object" + user);
map.put("userNew", user);
}
}
}

Response View:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body> userAge: ${requestScope.userNew.age} </body>
</html>

View:

<form action="testModelAttribute">
<br>
password : <input type="text" name="username" value="tiekui">
<br>
password : <input type="password" name="password" value="1234">
<br>
email : <input type="text" name="email" value="zhoutiekui@huawei.com">
<br>
age : <input type="text" name="age" value="18">
<br>
<input type="hidden" name="id" value="1">
<br>
Address Province: <input type="text" name="address.province" value="guangzhou">
<br>
Address City: <input type="text" name="address.city" value="shenzhen">
<br>
<input type="submit" value="Test ModelAttributes">
</form>

POJO userNew:
POJO Address:

package com.tiekui.springmvc.pojo;
public class Address {
private String province;
private String city;
public Address() {
super();
}
public Address(String province, String city) {
super();
this.province = province;
this.city = city;
}
@Override
public String toString() {
return "Address [province=" + province + ", city=" + city + "]";
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}

SpringMVC(十七-二十) ModelAttribute 注解的更多相关文章
- Java笔记(二十) 注解
注解 一.内置注解 Java内置了一些常用注解: 1.@Override 该注解修饰一个方法,表示当前类重写了父类的该方法. 2.@Deprecated 该注解可以修饰类.方法.字段.参数等.表示对 ...
- SpringMVC(二)--处理数据模型、ModelAndView、Model、Map、重定向、@ModelAttribute、
1.处理模型数据 Spring MVC 提供了以下几种途径输出模型数据: – ModelAndView:处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据 ...
- 7、SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解
从上一篇 SpringMVC源码分析(1) 中我们了解到在DispatcherServlet.doDispatch方法中会通过 mv = ha.handle(processedRequest, res ...
- springmvc在使用@ModelAttribute注解获取Request和Response会产生线程并发不安全问题(转)
springmvc在获取Request和Response有很多方式:具体请看:https://www.cnblogs.com/wade-luffy/p/8867144.html 产生线程问题的代码如下 ...
- SpringMVC @ModelAttribute注解
/** * 1. 有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用! * 2. @ModelAttribute 注解也可以来修饰 ...
- @ModelAttribute注解(SpringMVC)
在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了 @ModelAttribute 的方法. 在方法的入参前使用 @Mod ...
- SpringMvc中@ModelAttribute注解的使用
一.绑定请求参数到指定对象 public String test1(@ModelAttribute("user") UserModel user) 只是此处多了一个注解@Model ...
- SpringMVC的@ModelAttribute注解简单使用(用户修改信息)
例如有一个User对象,我们要修改他的值,但是不能修改他的密码!通过表单提交数据之后,password为null,会把原对象的passwod覆盖掉.这时候可以用@ModelAttribute注解处理. ...
- 二十七 集合!!!!!!!!set 二十八 文件
0: 不知道啊 去除重复元素? 1:frozenset 2:len(x) 3:直接一个错的报 4:好像一样 错 完全不一样的说 set = {[1,2]}这是想干嘛 :列表怎么可以进 ...
随机推荐
- Linux 用户切换、修改用户名、修改密码
一.用户切换 "$":普通用户提示符 "#":root用户提示符 1.普通用户到root: 方式一:命令:su然后输入root密码 此种方式只是切换了root身 ...
- IO伪异步实现
伪异步的实现,通过多线程,也会阻塞,等待连接 1.创建TcpServer类 package com.cppdy.tcp; import java.io.IOException; import java ...
- CommonJs、AMD、CMD模块化规范
/** * CommonJS 模块化规范 * CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作 */ /*-------Node.js遵循Commonjs规范----- ...
- 初识ActiveMQ
消息中间件的初步认识 什么是消息中间件? 消息中间件是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程 ...
- Workbench热水泵系统
1.创建一个新的项目,首先新建一个station,打开platform(链接配置,端口设置,账户设置) 新建文件夹之后模板的选取从palette中选择. 第一步新建station,键入station名 ...
- HashMap&线程
1.HashMap概念 HashMap是一个散列表,存储内容是键值对(key-value)的映射, HashMap继承了AbstractMap,实现了Map.Cloneable.java.io.Ser ...
- java和python对比----1:
对计算来说: java 除法: 3/4 ==0; pyhton 除法: 3/4 ==0 3//4==0.75
- Java 一个关于使用&&导致的BUG
二维数据track的定义: byte[][] track = new byte[10][10]; 本意:判断track[trackY][trackX]的值是否为零,以及trackX是否小于10. 带B ...
- js 图片转换base64 base64转换为file对象
function getImgToBase64(url,callback){//将图片转换为Base64 var canvas = document.createElement('canvas'), ...
- Go之viper配置
这个模块功能强大,读取配置,命令行,监听配置改变. 堪称多面手,在k8s,docker中,都多有应用. 这套应用,主要包括cobra,pflag,viper三件套. 了解得差不多啦...:) pack ...