问题如下。我有一个带有 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
之后无法打开。
我从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";
工作了,我进入了索引页面。