JavaのSpring Frameworkでフォームを作ってviewに渡すまでのサンプルです。
ここではSpringとLombokを使う前提とします。
🎂 Formオブジェクトの作成
まずはFormオブジェクトを作成します。
@Data public class CommentForm { @NotNull @Size(min = 1, max = 127) private String name;
@NotNull @Size(min = 1, max = 1024) private String comment; }
|
🏀 ControllerでFormを受け取る
FormクラスをControllerクラスで受け取ります。
@Controller @RequestMapping("articles") public class ArticleController { private static final String VIEW_BASE = "articles/";
@ModelAttribute public CommentForm setUpCommentForm() { return new CommentForm(); }
@GetMapping("") public String index(Model model) { return VIEW_BASE + "index"; }
@GetMapping("create") public String createForm(CommentForm form, Model model) { return VIEW_BASE + "createForm"; }
@PostMapping(value = "create", params = "confirm") public String createConfirm(@Validated CommentForm form, BindingResult result, Model model) { if (result.hasErrors()) { return createRedo(form, model); } return VIEW_BASE + "createConfirm"; }
@PostMapping(value = "create", params = "redo") public String createRedo(CommentForm form, Model model) { return VIEW_BASE + "createForm"; }
@PostMapping(value = "create") public String create(@Validated AbcForm form, BindingResult result, Model model, RedirectAttributes redirectAttributes) { if (result.hasErrors()) { return createRedo(form, model); }
redirectAttributes.addFlashAttribute("message", "新規レコードを作成しました")
return "redirect:/articles"; }
}
|
@ModelAttribute
でRequestMappingのついたメソッドの実行前に、受け取りたいFormクラスを初期化して返します。返り値はリクエストスコープに設定され、Thymeleafなどのビューから参照できます。
🏈 FormのボタンでPOST先のアクションを変える
Formの送信ボタンのname
オプションでPOST先のアクションを振り分ける方法を紹介します。
View側のHTMLはこちら。
<form> <button type="submit" name="A">Aへ進むbutton> <button type="submit" name="B">Bへ進むbutton> form>
|
Controller側のコードはこちら。
@PostMapping(value = "/wizard", params = "A") public String wizardA() { return "wizard_a"; }
@PostMapping(value = "/wizard", params = "B") public String wizardB() { return "wizard_b"; }
|
👽 参考リンク
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!