Spring mvc 从一个控制器重定向到另一个控制器可以工作,但另一个控制器无法打开页面

问题描述 投票:0回答:1

问题如下。我有一个带有 post-method 的控制器类,它使用 get-method 重定向到另一个控制器类。在调试模式下,我进入后方法,然后它重定向到获取方法并且它可以正常工作。但是代码

return "journals/doc/index";
不起作用,因为我停留在我称为后方法的同一页面上。同时没有错误。 当然,我希望转到 Journals/doc/index 页面,而不是停留在上一页。 请告诉我哪里错了?

感谢您的帮助!

// My first controller
@Controller
@RequestMapping("/myProject/journals/doc")
public class DOCController {

   @PostMapping("/create")
    public String create(@RequestBody String dataToSave) throws JsonProcessingException {

        // code to create object in database using JPARepository ...

        return "redirect:/myProject/journals/doc";
    }

}

// My second controller
@Controller
@RequestMapping("/myProject/journals/doc")
public class ViewDocController {

    @GetMapping()
    public String index(Model model) {
        model.addAttribute("viewDocs", viewDocService.getAll());
        return "journals/doc/index"; // it doesn't work
    }

}

EDIT

资源

journals/doc/index
存在且可用。当我在浏览器中输入 URL
localhost:8080/myProject/journals/doc
时,页面
index.html
打开。但是页面
index.html
在控制器
redirect:/myProject/journals/doc
之后无法打开。

spring spring-boot spring-mvc jsp
1个回答
0
投票

我从ajax调用了我的post方法

create(@RequestBody String data To Save)
,就像这样

   $.ajax({
        type: 'post',
        url: '/myProject/journals/doc/create',
        contentType : 'application/json; charset=utf-8',
        headers: {"X-CSRF-TOKEN": $("input[name='_csrf']").val()},
        data : JSON.stringify({document, plbTable}),

        error: function (jqXHR) {
            alert('Error: ' + jqXHR.status + '; Text: ' + jqXHR.responseText);
        }

    })

我添加了一个成功操作并转换到索引页面,我的ajax变成了这样

   $.ajax({
        type: 'post',
        url: '/myProject/journals/doc/create',
        contentType : 'application/json; charset=utf-8',
        headers: {"X-CSRF-TOKEN": $("input[name='_csrf']").val()},
        data : JSON.stringify({document, plbTable}),

        success: function() {
            window.location.href = "/myProject/journals/doc";
        },
        error: function (jqXHR) {
            alert('Error: ' + jqXHR.status + '; Text: ' + jqXHR.responseText);
        }

    })

我从

create(@RequestBody String dataToSave)
方法中删除了重定向

@PostMapping("/create")
public void create(@RequestBody String dataToSave) throws JsonProcessingException {

    // code to create object in database using JPARepository ...
    
}

现在链接

window.location.href = "/myProject/journals/doc";
工作了,我进入了索引页面。

© www.soinside.com 2019 - 2024. All rights reserved.