Je suis très nouveau sur Spring Boot. Je crée une application très basique avec SpringBoot et Thymeleaf. Dans le contrôleur, j'ai 2 méthodes comme suit:
Méthode 1 - Cette méthode affiche toutes les données de la base de données:
@RequestMapping("/showData")
public String showData(Model model)
{
model.addAttribute("Data", dataRepo.findAll());
return "show_data";
}
Méthode 2 - Cette méthode ajoute des données à la base de données:
@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";
}
Des fichiers HTML sont présents correspondant à ces méthodes, c'est-à-dire show_data.html et add_data.html.
Une fois la méthode addData terminée, je souhaite afficher toutes les données de la base de données. Cependant, ce qui précède redirige le code vers la page statique add_data.html et les données nouvellement ajoutées ne s'affichent pas. Je dois en quelque sorte invoquer la méthode showData sur le contrôleur, je dois donc rediriger l'utilisateur vers l'URL/showData. Est-ce possible? Si cela est le cas, comment cela peut-il être fait?
Merci d'avance.
Essaye ça:
@RequestMapping(value = "/addData", method = RequestMethod.POST)
public String addData(@Valid Data data, BindingResult bindingResult, Model model) {
//your code
return "redirect:/showData";
}
la solution de moineau n'a pas fonctionné pour moi. Il vient de rendre le texte "redirect: /"
J'ai pu le faire fonctionner en ajoutant HttpServletResponse httpResponse
À l'en-tête de la méthode du contrôleur.
Puis dans le code, en ajoutant httpResponse.sendRedirect("/");
dans la méthode.
Exemple:
@RequestMapping("/test")
public String test(@RequestParam("testValue") String testValue, HttpServletResponse httpResponse) throws Exception {
if(testValue == null) {
httpResponse.sendRedirect("/");
return null;
}
return "<h1>success: " + testValue + "</h1>";
}
Vous devez renvoyer un code d'état http 3xx à partir de votre demande addData et mettre l'url redirct dans la réponse.