Spring boot + ThymeleafでフォームをPOSTする
Thymeleafってよくよく考えると使ったことなかったので、今日ちょっと使ってみました。
画面からフォームをサブミットして結果を確認画面に渡すサンプルです。
コントローラ
package jp.co.confrage; import java.time.LocalDate; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller public class DemoController { @RequestMapping(value = "/index",method = RequestMethod.GET) public ModelAndView index(DemoForm form, ModelAndView mv) { form.setInDate(LocalDate.now()); mv.addObject("sampleForm", form);// フォーム内容をマッピングする mv.setViewName("sample001");// src/main/resources/templates/sample001.htmlに遷移する return mv; } @RequestMapping(value = "/confirm",method = RequestMethod.POST) public ModelAndView confirm(@Validated DemoForm form,BindingResult result, ModelAndView mv) { if (result.hasErrors()) { return index(form, mv); } return mv; } }
フォーム
入力部品はyyyy-MM-dd形式の日付だけにしました。
package jp.co.confrage; import java.io.Serializable; import java.time.LocalDate; import javax.validation.constraints.NotNull; import org.springframework.format.annotation.DateTimeFormat; import lombok.Data; @Data public class DemoForm implements Serializable{ private static final long serialVersionUID = -4230749597623724534L; @NotNull @DateTimeFormat(pattern = "uuuu-MM-dd") private LocalDate inDate; }
notNullチェックのチェックをしています。
@DateTimeFormatで表示形式を指定しています。
sample001.html
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8" /> <title>demo</title> </head> <body> <form role="form" th:action="@{/confirm}" th:object="${demoForm}" method="post"> <div class="form-group"> <label class="control-label" for="inputDate">処理年月</label> <input type="text" class="form-control" id="inputDate" name="inDate" th:field="*{inDate}" /> <span th:if="${#fields.hasErrors('inDate')}" th:errors="*{inDate}" class="help-block">error!</span> </div> <button type="submit" class="btn btn-default">実行</button> </form> </body> </html>
一応nullのチェックだけは確認できました。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント