私はSpring Bootを初めて使用します。 SpringBootとThymeleafを使用して、非常に基本的なアプリケーションを作成しています。コントローラーには、次の2つの方法があります。
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";
}
これらのメソッド、つまりshow_data.htmlおよびadd_data.htmlに対応するHTMLファイルが存在します。
AddDataメソッドが完了したら、データベースのすべてのデータを表示します。ただし、上記はコードを静的なadd_data.htmlページにリダイレクトし、新しく追加されたデータは表示されません。何らかの方法でコントローラーでshowDataメソッドを呼び出す必要があるため、ユーザーを/ showData URLにリダイレクトする必要があります。これは可能ですか?もしそうなら、どのようにこれを行うことができますか?
前もって感謝します。
これを試して:
@RequestMapping(value = "/addData", method = RequestMethod.POST)
public String addData(@Valid Data data, BindingResult bindingResult, Model model) {
//your code
return "redirect:/showData";
}
スズメの解決策はうまくいきませんでした。テキスト「redirect:/」をレンダリングしただけです
コントローラメソッドヘッダーに_HttpServletResponse httpResponse
_を追加することで、動作させることができました。
次に、コードでhttpResponse.sendRedirect("/");
をメソッドに追加します。
例:
_@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>";
}
_
AddDataリクエストからhttpステータスコード3xxを返し、応答にredirct urlを配置する必要があります。