2 xy makq xy_makq 于 2015.05.29 01:07 提问

Spring MVC 拼接json后,页面跳转并传json数据
从页面A传入参数,在spring controller 中拼接成json数据,怎样跳转到页面B,并同时传递拼接成的json数据?

    代码如下:
        @RequestMapping(value = "/saleout/precheck", method = RequestMethod.GET)   //初次查询

public @ResponseBody Map<String,Object> precheckStoreInForm(HttpServletRequest request,SaleOut saleout  , Map<String,Object> map,PageInfo sopg){
//传入参数,并做逻辑处理
    List<SaleOut> ls=new ArrayList<SaleOut>();
    for(SaleOut s:results){
        ls.add(s);
    }

    Map<String,Object> tempMap=new HashMap<String,Object>();
    tempMap.put("rows", ls);
    tempMap.put("total", ls.size());
    return tempMap;
}
目前这种处理方式json数据直接显示在页面A中,无法实现跳转到页面B并展示json数据。 用ajax回调函数实现跳转则无法显示json数据,并且调试不显示任何错误,无法定位。 
 请问在Spring MVC中是否可以实现跳转页面且同时传递json数据?
 多谢。

7个回答

LSL1618
LSL1618   2015.05.29 08:29
已采纳

可以在controller中绑定参数,跳转页面。去掉注解@ResponseBody。
1、返回值类型改为ModelAndView,利用ModelAndView对象绑定参数并设置跳转页面。
2、返回值类型改为String,利用HttpServletRequest对象绑定参数,返回值设置跳转页面。
推荐这两种方式。

xy_makq
xy_makq 其他方式都试过,并且都正常,刚发现是我搞错了一个参数
2 年多之前 回复
xy_makq
xy_makq 其他方式都试过,并且都正常,刚发现是我搞错了一个参数
2 年多之前 回复
LSL1618
LSL1618 回复xy_makq: 其实不需要自己去拼接JSON数据,你可以试试fastjson这个小框架,方便又实用。你不一定非得用json传数据,可以从A页面发送请求并附带查询参数,然后在controller实现传参和跳转,跳转自然是调到B页面。
2 年多之前 回复
xy_makq
xy_makq 以前用的就是这两种方式,为了返回json数据才换成了现在的。你的意思是自己拼接json数据,不用@ResponseBody返回json数据,然后用ModelAndView实现跳转和传参?
2 年多之前 回复
jiuqiyuliang
jiuqiyuliang   2015.05.29 08:22

一般是发异步(ajax)给后台,由后台来跳转页面的,前端开发一般不需要去处理页面跳转的问题。。。。

jiuqiyuliang
jiuqiyuliang 回复xy_makq: 应该也可以需要把数据给页面B带过去
2 年多之前 回复
xy_makq
xy_makq 嗯,就是在后台实现的跳转,用其他方式也实现了,不知道这种方式为什么不行
2 年多之前 回复
diaoliwei2
diaoliwei2   Rxr 2015.05.29 09:21

为什么要跳转页面并同时传json呢,跳转到页面异步加载数据不行吗?要不然你就在跳转页面的时候,加个addAttribute将你的json放进去,到页面上再取出来

u011376884
u011376884   2015.05.29 09:24

rows total 看到这些想到easyui的分页了……
如果是的话,那你跳转其他页面只要带上那条数据唯一标示/主键id就行了,
到新的页面再去查数据……没必要带数据过去

xy_makq
xy_makq 是的,用的easyui,可是跳转后取不到json数据。
2 年多之前 回复
fx_ss
fx_ss   2015.05.29 11:52

你前端用的是easyUI吗

xy_makq
xy_makq 是的,前端取不到json数据
2 年多之前 回复
qq_33880112
qq_33880112   2016.04.02 10:30

假如我从后台的Controller 里面想跳转到A页面,同时A 页面url: 读取一个后台传来的json 数据,
是选择后台将json 格式写入一个.json文件,前端读取,还是选择跳转的同时,传递参数

u013799845
u013799845   2016.05.26 14:29

modelAndView.addObject("address", address), modelAndView.addObject("certId", Arrays.toString(certId)),modelAndView.addObject("action", "shoppingArt"),modelAndView.addViewName("order/determine-order.ftl").action();为什么跳过去,没有数据是什么原因

Csdn user default icon
上传中...
上传图片
插入图片