关于SpringMVC页面向Controller传参的问题,看了网上不少帖子,大多总结为以下几类:

1、直接把页面表单中相关元素的name属性对应的值作为Controller方法中的形参。

  这个应该是最直接的,我看的那本书从百度的编辑器中取内容content时就直接用的这个方法:

<!--页面-->
<form action="<%=basePath%>saveUeditorContent" method="post">
<!-- 加载编辑器的容器 -->
<div style="padding: 0px;margin: 0px;width: 100%;height: 100%;" >
<script id="container" name="content" type="text/plain">
</script> <!--why dose this use script tag here???-->
</div>
<input name="test_input" value="hengha">
<button type="submit"> 保存</button>
</form>
    //Controller
@RequestMapping(value="/saveUeditorContent")
public ModelAndView saveUeditor(String content, String test_input){
ModelAndView mav = new ModelAndView("myJSP/test03");
//addObject方法设置了要传递给视图的对象
mav.addObject("content", content);
mav.addObject("input_content", test_input);
//返回ModelAndView对象会跳转至对应的视图文件。也将设置的参数同时传递至视图
return mav;
}

2、通过@RequestParam把页面表单中相关元素的name属性对应的值绑定Controller方法中的形参。

用于URL带?场景,/saveUeditorContent?content=123&input_content=456,参数可以设置是否必须required,默认值defaultvalue

    @RequestMapping(value="/saveUeditorContent")
public ModelAndView saveUeditor(@RequestParam(value="content",required=true,defaultValue="123") String content, @RequestParam("test_input") String input_content){
ModelAndView mav = new ModelAndView("myJSP/test03");
mav.addObject("content", content);
mav.addObject("input_content", input_content);
return mav;
}

3、通过@PathVariable获取@RequestMapping中URL路径带入的{变量}绑定Controller方法中的形参。

用于URL直接传参场景,/saveUeditorContent/123/456

    @RequestMapping(value="/saveUeditorContent/{content}/{test_input}")
public ModelAndView saveUeditor(@PathVariable("content") String content, @PathVariable("test_input") String input_content){
ModelAndView mav = new ModelAndView("myJSP/test03");
mav.addObject("content", content);
mav.addObject("input_content", input_content);
return mav;
}

4、创建属性名对应页面表单中相关元素带setter和getter方法的POJO对象作为Controller方法中的形参。

//太晚了不是特别熟不整了

5、把HttpServletRequest对象作为Controller方法中的形参。

    @RequestMapping(value="/saveUeditorContent")
public ModelAndView saveUeditor(HttpServletRequest request){
ModelAndView mav = new ModelAndView("myJSP/test03");
mav.addObject("content", request.getParameter("content"));
mav.addObject("input_content", request.getParameter("test_input"));
return mav;
}

约束说明:

a) 1中的形参,2中的RequestParam("参数"),3中的URL中的{参数}以及PathVariable("参数"),4中的POJO对象属性,5中的request.getParameter("参数")均需要和前台页面中相关元素name属性对应的值匹配。

b) 2中的RequestParam("参数"),3中的PathVariable("参数")绑定到后面跟的形参,后台在处理时根据实际需要可以改变参数名称。

SpringMVC页面向Controller传参的更多相关文章

  1. struts2 页面向Action传参方式

    1.基本属性注入 我们可以直接将表单数据项传递给Action,而Action只需要提供基本的属性来接收参数即可,这种传参方式称为基本属性注入.例如 jsp页面: <s:form method=& ...

  2. springmvc jsp向controller传参,一直为null

    怎么检查都无解 重启电脑好了

  3. angularjs不同页面间controller传参方式,使用service封装sessionStorage

    这里分享一个我在实际项目中,使用service封装的一个依赖sessionStorage的传参服务. 这里先说下大背景,在我们的实际开发中,登陆之后一般会存在一个token,这个token将会贯穿全场 ...

  4. JS form跳转到新标签页并用post传参

    通过js实现跳转到一个新的标签页,并且传递参数.(使用post传参方式) 1 超链接<a>标签  (get传参)  <a href="http://www.cnblogs. ...

  5. jnhs-SpringMVC jsp页面向controller传递参数的五种方式

    一共是五种传参方式: 一:直接将请求参数名作为Controller中方法的形参 public  String login (String username,String password)   : 解 ...

  6. C# 页面向controller中跳转匹配方法的时候,当controller中有两个重载方法时候,不发生跳转

    在ajax中的URL跳向controller一个方法时候,controller中有两个重载的方法,ajax不发生跳转,当删除另外一个方法之后,正常跳转. 不知道,是我自己写的有问题,还是control ...

  7. springboot controller传参,对象映射

    Post请求,对象映射时,在参数 加 @RequestBody: 传入对象内字段的json才能映射 {"legendData": [100,90,80,70,60,50,40,30 ...

  8. angular 跳转页面时传参

    首先,你需要已经配置过你的rout,比如: $stateProvider .state('firstPage',{ url:'/Page/firstPage', templateUrl: 'Page/ ...

  9. Vue框架(四)——路由跳转、路由传参、cookies、axios、跨域问题、element-ui模块

    路由跳转 三种方式: $router.push / $router.go / router-link to this.$router.push('/course'); this.$router.pus ...

随机推荐

  1. XML语言1.简介和语法

    一.什么是XML语言? XML 指可扩展标记语言(Extensible Markup Language) Xml是独立于软件和硬件的信息传输工具. XML 是一种很像HTML的标记语言. 但xml不是 ...

  2. Oracle 的开窗函数 rank,dense_rank,row_number

    1.开窗函数和分组函数的区别 分组函数是指按照某列或者某些列分组后进行某种计算,比如计数,求和等聚合函数进行计算. 开窗函数是指基于某列或某些列让数据有序,数据行数和原始数据数相同,依然能曾现个体数据 ...

  3. Redis线程模型

    Redis 基于 Reactor 模式开发了自己的网络事件处理器: 这个处理器被称为文件事件处理器(file event handler): 文件事件处理器使用 I/O 多路复用(multiplexi ...

  4. Kali学习笔记43:SQL盲注

    前面的文章都是基于目标会返回错误信息的情况进行判断是否存在SQL注入 我们可以轻易根据数据库报错信息来猜测SQL语句和注入方式 如果程序员做得比较好,不显示错误信息,这种情况下得SQL注入称为SQL盲 ...

  5. [Swift]LeetCode783. 二叉搜索树结点最小距离 | Minimum Distance Between BST Nodes

    Given a Binary Search Tree (BST) with the root node root, return the minimum difference between the ...

  6. Python面试真题第一节

    1.一行代码实现1--100之和 2.如何在一个函数内部修改全局变量 3.列出5个python标准库 4.字典如何删除键和合并两个字典 5.谈下python的GIL 6.python实现列表去重的方法 ...

  7. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer; 报错解决

    我的妈呀  真的是各种报错..... 这个问题    解决方法: https://www.cnblogs.com/beppezhang/p/6118661.html

  8. 让一个数组中存在N多个函数。让每个函数执行的 时候自动加1

    function test(){ var arr = [ ]; for (var i = 0; i < 10; i++) { (function(i){ arr[i] = function(){ ...

  9. 【原创】一文掌握 Linux 性能分析之 I/O 篇

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 一文掌握 Li ...

  10. 微信小程序实战–集阅读与电影于一体的小程序项目(八)

    31.电影详情页面 movie-template.wxml <view class="movie-container" catchtap="onMovieTap&q ...