关于springMVC和JSP页面传递数据

清风止雨 2017-11-21 04:15:20
这是MVC的
@RequestMapping("/cableTest/search_cableTest")
@ResponseBody
public ModelAndView handleRequest(String[] ids,HttpServletRequest request,HttpServletResponse response)
throws Exception{
CableTest m= cableTestService.getById(ids[0]);
String formData = m.getFormData();
System.out.println(formData);
ModelAndView mv = new ModelAndView();
//封装要显示到视图的数据
mv.addObject("formData",formData);
//视图名
mv.setViewName("cableTest_search");
return mv;

}

这是list页面,在这个页面上勾选一个 点击后打开需要显示数据的页面
function cableTest_search(){
$.get("cableTest/search",'',function(data){
if(data.msg != null){
$.messager.alert('提示', data.msg);
}else{
var ids = getMaterialSelectionsIds();
if(ids.length == 0){
$.messager.alert('提示','必须选择一个记录才能编辑!');
return ;
}
if(ids.indexOf(',') > 0){
$.messager.alert('提示','只能选择一个记录!');
return ;
}
var params = {"ids":ids};
$.get("cableTest/search_cableTest",params, function(data){
/* if(data.status == 200){
$.messager.alert('提示','出库成功!',undefined,function(){
$("#cableTestList").datagrid("reload");
});
} */
$("#cableTestWindow").window("open");

});
}
});
}


这是需要显示数据的页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<link href="js/kindeditor-4.1.10/themes/default/default.css" type="text/css" rel="stylesheet">
<script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.10/kindeditor-all-min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.10/lang/zh_CN.js"></script>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div style="padding:10px 10px 10px 10px">
<form id="cableTestForm" class="cableTestForm" method="post">
<div id="search">${formData}</div>${requestScope.formData}
<input value=${formData}>
</form>
${requestScope.formData}
</div>


<script type="text/javascript">
var formData = ${formData};
$("#search").html(formData);
</script>




需要传递的formData 这个数据是一个table表格的完整代码,在后台上可以打印输出,但是在JSP上显示空白,什么都没有
...全文
378 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
清风止雨 2017-11-22
  • 打赏
  • 举报
回复
引用 6 楼 xuhailiang0816 的回复:
ResponseBody注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区(返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用)。 如果使用的是ajax抓取数据,数据只在ajax域(相当于局部变量),在jsp里获取不到。 你可以改成跳页面,或者ajax去访问。跳页面的话,把后台代码里的ResponseBody注解去掉,页面上访问这个后台方法的js代码也可以去掉了;用ajax访问的话,把ModelAndView改成Map或者Json之类的,在ajax里去刷新页面数据区$.get("cableTest/search_cableTest",params, function(data){/*编写js代码根据返回结果动态刷新页面数据展示区*/});
我要传的数据就是一个string,ajax不太熟,我已经把ResponseBody去掉了, 后台是这样显示的 DEBUG [http-nio-8080-exec-7] - ==> Preparing: select * from cabletest where cableNo = ? DEBUG [http-nio-8080-exec-7] - ==> Parameters: 789632145(String) DEBUG [http-nio-8080-exec-7] - <== Total: 1 DEBUG [http-nio-8080-exec-7] - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@113c08c] DEBUG [http-nio-8080-exec-7] - Returning JDBC Connection to DataSource <table border="1"><tr align="center"><td style="width: 60px;height: 25px;" align="center">内层</td>.... DEBUG [http-nio-8080-exec-7] - Rendering view [org.springframework.web.servlet.view.JstlView: name 'cableTest_search'; URL [/WEB-INF/jsp/cableTest_search.jsp]] in DispatcherServlet with name 'SpringMVC' DEBUG [http-nio-8080-exec-7] - Added model object 'formData' of type [java.lang.String] to request in view with name 'cableTest_search' DEBUG [http-nio-8080-exec-7] - Added model object 'a' of type [java.lang.String] to request in view with name 'cableTest_search' DEBUG [http-nio-8080-exec-7] - Forwarding to resource [/WEB-INF/jsp/cableTest_search.jsp] in InternalResourceView 'cableTest_search' DEBUG [http-nio-8080-exec-7] - Successfully completed request DEBUG [http-nio-8080-exec-9] - DispatcherServlet with name 'SpringMVC' processing GET request for [/fibersstore/cableTest/search] DEBUG [http-nio-8080-exec-9] - Looking up handler method for path /cableTest/search DEBUG [http-nio-8080-exec-9] - Returning handler method [public java.lang.String com.zhoup.controller.CableTestContronller.search() throws java.lang.Exception] DEBUG [http-nio-8080-exec-9] - Returning cached instance of singleton bean 'cableTestContronller' DEBUG [http-nio-8080-exec-9] - Last-Modified value for [/fibersstore/cableTest/search] is: -1 DEBUG [http-nio-8080-exec-9] - Rendering view [org.springframework.web.servlet.view.JstlView: name 'cableTest_search'; URL [/WEB-INF/jsp/cableTest_search.jsp]] in DispatcherServlet with name 'SpringMVC' DEBUG [http-nio-8080-exec-9] - Forwarding to resource [/WEB-INF/jsp/cableTest_search.jsp] in InternalResourceView 'cableTest_search' DEBUG [http-nio-8080-exec-9] - Successfully completed request 但是web上没有反应,如果把list页面的 $("#cableTestWindow").window("open");注释掉,那就是什么动静都没有 只是在后台显示跳转
顾北L 2017-11-22
  • 打赏
  • 举报
回复
ResponseBody注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区(返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用)。 如果使用的是ajax抓取数据,数据只在ajax域(相当于局部变量),在jsp里获取不到。 你可以改成跳页面,或者ajax去访问。跳页面的话,把后台代码里的ResponseBody注解去掉,页面上访问这个后台方法的js代码也可以去掉了;用ajax访问的话,把ModelAndView改成Map或者Json之类的,在ajax里去刷新页面数据区$.get("cableTest/search_cableTest",params, function(data){/*编写js代码根据返回结果动态刷新页面数据展示区*/});
清风止雨 2017-11-22
  • 打赏
  • 举报
回复
引用 3 楼 u011594442 的回复:
[quote=引用 楼主 u010361914 的回复:] 这是MVC的 @RequestMapping("/cableTest/search_cableTest") @ResponseBody public ModelAndView handleRequest(String[] ids,HttpServletRequest request,HttpServletResponse response) throws Exception{ CableTest m= cableTestService.getById(ids[0]); String formData = m.getFormData(); System.out.println(formData); ModelAndView mv = new ModelAndView(); //封装要显示到视图的数据 mv.addObject("formData",formData); //视图名 mv.setViewName("cableTest_search"); return mv; } 这是list页面,在这个页面上勾选一个 点击后打开需要显示数据的页面 function cableTest_search(){ $.get("cableTest/search",'',function(data){ if(data.msg != null){ $.messager.alert('提示', data.msg); }else{ var ids = getMaterialSelectionsIds(); if(ids.length == 0){ $.messager.alert('提示','必须选择一个记录才能编辑!'); return ; } if(ids.indexOf(',') > 0){ $.messager.alert('提示','只能选择一个记录!'); return ; } var params = {"ids":ids}; $.get("cableTest/search_cableTest",params, function(data){ /* if(data.status == 200){ $.messager.alert('提示','出库成功!',undefined,function(){ $("#cableTestList").datagrid("reload"); }); } */ $("#cableTestWindow").window("open"); }); } }); } 这是需要显示数据的页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <link href="js/kindeditor-4.1.10/themes/default/default.css" type="text/css" rel="stylesheet"> <script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.10/kindeditor-all-min.js"></script> <script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.10/lang/zh_CN.js"></script> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <div style="padding:10px 10px 10px 10px"> <form id="cableTestForm" class="cableTestForm" method="post"> <div id="search">${formData}</div>${requestScope.formData} <input value=${formData}> </form> ${requestScope.formData} </div> <script type="text/javascript"> var formData = ${formData}; $("#search").html(formData); </script> 需要传递的formData 这个数据是一个table表格的完整代码,在后台上可以打印输出,但是在JSP上显示空白,什么都没有
这两段重复了吧,如果你要直接跳转页面就别走ajax请求了。你F12看页面有报错吗?[/quote] 去掉其中一个 也不行,还是什么都没
清风止雨 2017-11-21
  • 打赏
  • 举报
回复
引用 3 楼 u011594442 的回复:
[quote=引用 楼主 u010361914 的回复:] 这是MVC的 @RequestMapping("/cableTest/search_cableTest") @ResponseBody public ModelAndView handleRequest(String[] ids,HttpServletRequest request,HttpServletResponse response) throws Exception{ CableTest m= cableTestService.getById(ids[0]); String formData = m.getFormData(); System.out.println(formData); ModelAndView mv = new ModelAndView(); //封装要显示到视图的数据 mv.addObject("formData",formData); //视图名 mv.setViewName("cableTest_search"); return mv; } 这是list页面,在这个页面上勾选一个 点击后打开需要显示数据的页面 function cableTest_search(){ $.get("cableTest/search",'',function(data){ if(data.msg != null){ $.messager.alert('提示', data.msg); }else{ var ids = getMaterialSelectionsIds(); if(ids.length == 0){ $.messager.alert('提示','必须选择一个记录才能编辑!'); return ; } if(ids.indexOf(',') > 0){ $.messager.alert('提示','只能选择一个记录!'); return ; } var params = {"ids":ids}; $.get("cableTest/search_cableTest",params, function(data){ /* if(data.status == 200){ $.messager.alert('提示','出库成功!',undefined,function(){ $("#cableTestList").datagrid("reload"); }); } */ $("#cableTestWindow").window("open"); }); } }); } 这是需要显示数据的页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <link href="js/kindeditor-4.1.10/themes/default/default.css" type="text/css" rel="stylesheet"> <script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.10/kindeditor-all-min.js"></script> <script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.10/lang/zh_CN.js"></script> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <div style="padding:10px 10px 10px 10px"> <form id="cableTestForm" class="cableTestForm" method="post"> <div id="search">${formData}</div>${requestScope.formData} <input value=${formData}> </form> ${requestScope.formData} </div> <script type="text/javascript"> var formData = ${formData}; $("#search").html(formData); </script> 需要传递的formData 这个数据是一个table表格的完整代码,在后台上可以打印输出,但是在JSP上显示空白,什么都没有
这两段重复了吧,如果你要直接跳转页面就别走ajax请求了。你F12看页面有报错吗?[/quote] 我是想都试试,没报错,如果重复是空白么,还是说重复出来2次,明天我改改看
Sunyiban 2017-11-21
  • 打赏
  • 举报
回复
引用 楼主 u010361914 的回复:
这是MVC的 @RequestMapping("/cableTest/search_cableTest") @ResponseBody public ModelAndView handleRequest(String[] ids,HttpServletRequest request,HttpServletResponse response) throws Exception{ CableTest m= cableTestService.getById(ids[0]); String formData = m.getFormData(); System.out.println(formData); ModelAndView mv = new ModelAndView(); //封装要显示到视图的数据 mv.addObject("formData",formData); //视图名 mv.setViewName("cableTest_search"); return mv; } 这是list页面,在这个页面上勾选一个 点击后打开需要显示数据的页面 function cableTest_search(){ $.get("cableTest/search",'',function(data){ if(data.msg != null){ $.messager.alert('提示', data.msg); }else{ var ids = getMaterialSelectionsIds(); if(ids.length == 0){ $.messager.alert('提示','必须选择一个记录才能编辑!'); return ; } if(ids.indexOf(',') > 0){ $.messager.alert('提示','只能选择一个记录!'); return ; } var params = {"ids":ids}; $.get("cableTest/search_cableTest",params, function(data){ /* if(data.status == 200){ $.messager.alert('提示','出库成功!',undefined,function(){ $("#cableTestList").datagrid("reload"); }); } */ $("#cableTestWindow").window("open"); }); } }); } 这是需要显示数据的页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <link href="js/kindeditor-4.1.10/themes/default/default.css" type="text/css" rel="stylesheet"> <script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.10/kindeditor-all-min.js"></script> <script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.10/lang/zh_CN.js"></script> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <div style="padding:10px 10px 10px 10px"> <form id="cableTestForm" class="cableTestForm" method="post"> <div id="search">${formData}</div>${requestScope.formData} <input value=${formData}> </form> ${requestScope.formData} </div> <script type="text/javascript"> var formData = ${formData}; $("#search").html(formData); </script> 需要传递的formData 这个数据是一个table表格的完整代码,在后台上可以打印输出,但是在JSP上显示空白,什么都没有
这两段重复了吧,如果你要直接跳转页面就别走ajax请求了。你F12看页面有报错吗?
清风止雨 2017-11-21
  • 打赏
  • 举报
回复
引用 1 楼 yanghaimingg 的回复:
@RequestMapping("/cableTest/search_cableTest") @ResponseBody public ModelAndView{ 这个写法有问题吧,既然指定返回视图了,为何要用@ResponseBody?加这个代表返回的是对象
去掉了,但是只显示了一个input,其他的地方都是空白,在JSP用F12看控制台,JS里显示的是var formData = ; 其他地方都是白的
mtian2020 2017-11-21
  • 打赏
  • 举报
回复
@RequestMapping("/cableTest/search_cableTest") @ResponseBody public ModelAndView{ 这个写法有问题吧,既然指定返回视图了,为何要用@ResponseBody?加这个代表返回的是对象

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧