博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[DEBUG] springboot结合freemaker和js实现页面跳转和传值-踩坑记录
阅读量:652 次
发布时间:2019-03-15

本文共 1576 字,大约阅读时间需要 5 分钟。

这次项目换了freemarker模板,我不熟。再加上我js真是一塌糊涂,解决一个按钮跳转问题,居然花费了一天多。。。

现在记录一下吧。

问题描述:当前网址是A,视图如下。我希望点击“详情”跳转到网址A/details,展示这条记录的详细信息。

但是始终无法跳转。debug发现前台向后台传数据ok,后台查询数据库ok,但始终无法跳转到A/details。直接输入

A/details,发现ftl文件编写和访问正确。

 踩到的坑

1.@RestController理解错误 2. js跳转理解错误 3. ajax理解错误

知识总结

1.@RestController

这个注解相当于@ResponseBody 和 @Controller两个注解的组合,不返回视图,只返回数据。如果一个类上加了这个注解,

那么这个类的函数都是返回不了视图的,return "redirect:/seq_tool/seq_order_details";也会只在页面上显示return的字符串。

解决方法是把类上的注解改为@Controller,然后给不返回视图,只返回数据的函数加上注解@ResponseBody。

2.js跳转问题

直接贴代码

我的表格是用js的bootstrapTable创建的,所以在另一个文件table.js写了操作,这里隐去。

table.js绑定按钮操作:

/* [pxy]查看订单细节 */$('#tablelist').on('click', '.btn-get-details', function () {    var $this = $(this);    var orderId = $this.attr("order-id");    var url = options.getDetailsUrl.replace("{id}", orderId);    window.location.href=url+"?backurl="+window.location.href;});

后台:

@Controller@RequestMapping("/seq_tool")public class SeqOrderController {    @RequiresPermissions("seq_tool:getdetails")    @GetMapping(value="/getdetails/{orderid}")    public String getDetails(@PathVariable("orderid")String orderid, RedirectAttributes ra) {        // 获取了一些数据        String oid = X.getOrderId();        // ...      // 为了重定向时携带数据        ra.addFlashAttribute("orderid", oid == null ? "NULL" : oid);return "redirect:/seq_tool/seq_order_details";    }} // 涉及权限控制,我把另一块写在另一个类 @Controller public class RenderController {
@RequiresPermissions("seq_tool")     @GetMapping("/seq_tool/seq_order_details")     public String getOrderDetails() {
    return "tools/seq_order_details";     } }

 

至此,顺利跳转。

 

转载地址:http://bxelz.baihongyu.com/

你可能感兴趣的文章