form表单如何提交Json数据到springmvc让后台控制跳转页面并携带数据?

使用form默认的数据格式太麻烦了,我的数据嵌套很严重,四层list嵌套,如果通过索引拼input的name太痛苦了,

所以想form表单提交json数据,然后数据提交到后台,后台处理以后再根据我传输的数据跳转到其他页面。

阅读 9.8k
8 个回答

帮你分解一下问题:

使用form默认的数据格式太麻烦了,我的数据嵌套很严重,四层list嵌套,如果通过索引拼input的name太痛苦了。

所以想form表单提交json数据,然后数据提交到后台,后台处理以后再根据我传输的数据跳转到其他页面

1.首先是数据嵌套严重的问题,可以通过json格式前后端传输数据解决这个问题,前端将json数据绑定到指定的参数上,后端接收该参数后json格式化读取即可。

2.其次是根据传输的数据跳转到其他页面的问题,你想要实现的是控制器可以跳转到指定的视图,可以参考spring的说明文档,控制器可以返回多种类型作为返回值,可以是String,Model,Map,ModelAndView。你这里可以返回String类型来指定视图的名称,也可以返回ModelAndView来指定是哪一个视图。

后台接口不要加@ResponseBody注解
然后直接return "/index" 这样应该就行了

你要的应该就是这样的写法吧

@RequestMapping(value = "/", method = RequestMethod.GET)
    public String welcome(){
        return "home/welcome.html";
}

返回的地址注意要写全了,要从static下开始写(我用的springboot)

用了@ResponseBody也是可以做到跳转的,给你参考一下

@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public String index() {
        return "<script>window.location.href='home/welcome.html';</script>";
}    

return "redirect:home/welcome.html";
或者

@RequestMapping(value = "XX")
@ResponseBody
public String index() {
     return 一个标识
}    

然后ajax中根据标识数据window.location.href = home/welcome.html;

要让后台控制调整,那你就不能用ajax发送请求。
前端form的action执行请求地址,method指定请求方法;
后台接口不要加@ResponseBody 直接return 相应跳转的页面或者重定向到其他页面

    /**
     * @Param btPageReq 页面传过来的数据
     * @return
     */
    @RequestMapping(value = "/detailUrl", method = RequestMethod.GET)
    public String detail(@ModelAttribute("btPageReq") BtPageReq btPageReq, Model model) {
        // 数据处理btPageReq,处理成 data 后返回到页面
        model.addAttribute("data", data);
        return PREFIX + "/detail.html";
    }

无视您的需求,只看结果的话。我觉得您可以直接前端自己组复杂对象,ajax传输给后台,回调结果给前端后直接用前端跳转页面好像更好让你理解一些的。 并且可以更方便的反馈每一步的结果,用户体验更好一些。

ModelAndView/request/session
return "forward:url";

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏