我是Spring Boot的新手。我正在使用SpringBoot和Thymeleaf创建一个非常基本的应用程序。在控制器中,我有两种方法如下:
Method1 - 此方法显示数据库中的所有数据:
@RequestMapping("/showData")
public String showData(Model model)
{
model.addAttribute("Data", dataRepo.findAll());
return "show_data";
}
Method2 - 此方法将数据添加到数据库:
@RequestMapping(value = "/addData", method = RequestMethod.POST)
public String addData(@Valid Data data, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) {
return "add_data";
}
model.addAttribute("data", data);
investmentTypeRepo.save(data);
return "add_data.html";
}
HTML文件与这些方法相对应,即show_data.html和add_data.html。
addData方法完成后,我想显示数据库中的所有数据。但是,上面的代码会将代码重定向到静态add_data.html页面,并且不会显示新添加的数据。我需要以某种方式调用控制器上的showData方法,因此我需要将用户重定向到/ showData URL。这可能吗?如果是这样,怎么办呢?
提前致谢。
答案 0 :(得分:26)
试试这个:
@RequestMapping(value = "/addData", method = RequestMethod.POST)
public String addData(@Valid Data data, BindingResult bindingResult, Model model) {
//your code
return "redirect:/showData";
}
答案 1 :(得分:1)
我能够通过将/category/extended-slug?json=true
添加到控制器方法标题来实现它。
然后在代码中,将HttpServletResponse httpResponse
添加到方法中。
示例:
httpResponse.sendRedirect("/");
答案 2 :(得分:0)
您应该从addData请求中返回http状态代码3xx,并将redirct网址放在响应中。
答案 3 :(得分:0)
以下解决方案为我工作。 getAllCategory()方法显示数据,createCategory()方法将数据添加到数据库。使用返回“ redirect:categories”; ,将重定向到getAllCategory()方法。
@GetMapping("/categories")
public String getAllCategory(Model model) {
model.addAttribute("categories",categoryRepo.findAll());
return "index";
}
@PostMapping("/categories")
public String createCategory(@Valid Category category) {
categoryRepo.save(category);
return "redirect:categories";
}
也可以使用Ajax jQuery。