SpringMVC 控制器向视图传值的方式
来源:互联网 发布:黑马程序员简历模板 编辑:程序博客网 时间:2024/06/06 03:07
在SpringMVC中,控制器向视图传值一般有三中方式,分别是通过ModelAndView、ModelMap、Session,下面将讲述三种传值方式
ModelAndView
将控制器方法的返回值设为ModelAndView,并且向ModelAndView中添加数据,在视图的requestScope中将可以访问到放入的数据。
控制器方法示例如下:
@RequestMapping("/getTime") public ModelAndView getTime(){ String viewName = "success"; //向ModelAndView中构造方法传入的参数为目标视图的名称 ModelAndView modelAndView = new ModelAndView(viewName); modelAndView.addObject("time", new Date()); return modelAndView; }
在目标视图中可以访问到该变量
<h1>${requestScope.time}</h1>
ModelMap
使用ModelMap需要有一个ModelMap变量作为控制器方法的形参,在其中添加要传递到页面的数据。此处用ModelMap和Map都是可以的。
示例代码如下:
@RequestMapping("/getCity") public String getCity(Map<String,Object> map){ map.put("address","NingBo"); return "success"; }
同样这么写也是可以的
@RequestMapping("/getCity") public String getCity(ModelMap map){ map.put("address","NingBo"); return "success"; }
其实,无论是ModelMap还是Map,甚至是不传递参数,仅仅是返回目标视图名称,SpringMVC都会把它转换陈ModelAndView传递给视图。
在ModelAndView的源码中可以看到,ModelAndView有两个成员变量,分别是view和Model
private Object view;private ModelMap model;
分别代表了目标视图和携带的参数,其中的参数会由SpringMVC把ModelMap 中的键值对逐个放到Request中,也就是为什么放入到ModelAndView或ModelMap中的数据最终能在requestScope中访问到的原因。
Session
如果把需要的数据放入到Session中,那么视图自然能访问到该数据。SpringMVC将值放入Session中的方法是添加SessionAttributes注解。
@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface SessionAttributes { String[] value() default {}; Class<?>[] types() default {};}
以上为SessionAttributes的源码,可以看到该注解目标是类,所以要把该注解放到控制器前
有两个属性,其中value表示要放入session中的键。types表示要自动放入session中的类类型。
注意,放入SessionAttributes还有一个条件是该值要手动放入request,也就是ModelAndView中
@SessionAttributes(types = {java.lang.String.class},value = {"city","time"})
这句注释的意思是自动把放入ModelAndView中的值为String类型的键值对放入Session中,同时把键为city和time的键值对也放入Session中。
然后,在该会话的所有页面都可以访问到这些属性了。
<h1>${sessionScope.names}</h1>
- SpringMVC 控制器向视图传值的方式
- 关于MVC中控制器(controller)向视图(view)传值的几种方式
- Springmvc中视图向控制器传输参数的一种方法
- 控制器向视图传递数据的3种方式
- CakePHP控制器向视图传值总结
- CakePHP控制器向视图传值总结
- 视图控制器切换的方式
- laravel通过a标签从视图向控制器传值
- Action向视图传值的6种方式
- .NET MVC控制器向视图传递数据的四种方式
- springMvc向页面传值和读取的方式
- 视图控制器的view创建方式
- 视图控制器直接的传值
- thinkphp 中实用的三种视图向控制器传值得方法
- 一、总结几种关于ViewControllers之间传值的方式(从父视图向子视图传值)
- 二、总结几种关于ViewControllers之间传值的方式(从子视图向父视图传值)
- jsp页面向springmvc控制器的参数传递
- 从一个视图控制器切换到另一个视图控制器的几种方式
- 获取xmlhttpQequest对象
- 深 圳 发 票
- SVN服务器搭建和使用(二)
- Depth of binary tree
- 推荐几个android学习的网站
- SpringMVC 控制器向视图传值的方式
- 【记录】对话框的学习
- Unity在切换横竖屏时闪退的bug
- android学习路线
- kafka 效率优化
- 怎样登录和退出Linux系统----Linux学习笔记(1)
- 天 津 代 开 发 票
- 天 津 开 发 票
- Buffer同步 ,并行读取流文件