2017年2月20日月曜日

Spring Boot / Redirect先にオブジェクトを渡す

Spring Bootをいじってました。


RedirectAttributes attributes
Spring BootのGetting StartedでRedirect先にオブジェクトが渡せなくて1時間くらいハマってました。
結論、「RedirectAttributes attributes」で回避
  @PostMapping("/")
  public String checkPersonInfo(
          @Valid
          @ModelAttribute("personForm")
          PersonForm personForm
          ,BindingResult bindingResult
          ,RedirectAttributes attributes) {

    if (bindingResult.hasErrors() ) {
      return "form";
    }
    attributes.addFlashAttribute("personForm", personForm);
    return "redirect:/results";
  }
こちらを参考にさせていただきました。
Qiita SpringMVCでリダイレクト先ページにパラメータを渡す方法

brに閉じスラッシュをどうしてもつけたくない
意外とかったるいThymeleafのtemplatemodeの制約
LegacyHTML5だと単独タグでも閉じスラッシュが必要になる。
そこでtemplatemodeをLegacyHTML5にしましたが、この時はnekoHTMLというライブラリをimportする必要があるみたいです。
Gradleなら
dependencies {
        ...
 compile('net.sourceforge.nekohtml:nekohtml')
}

spring.thymeleaf.cache=falseを指定したのに、更新されない!どういうこと!?
IntelliJ上でgradle::bootRunしていて、spring.thymeleaf.cache=falseを設定の上、
HTMLファイルを更新してもブラウザで変更が確認できず調べる羽目になった。

結果、ファイル更新した後にbuildしないと内容は変わりません。
IntelliJ依存も疑って、Terminalでgradle bootRunしてみましたが、
これもbuildし直さなきゃHTMLファイルの変更すら反映されませんでした。

javax.validation.constraints.*のvalidation message
@NotNull(message="hoge")
以上!!簡単かつ簡潔
Spring Bootいいね!!

エラーページ
デフォルトなら、templates配下にerror.htmlを作ればよし。
エラーコードによる分岐はまた今度やります。
こちらを参考にさせてもらいました:システム開発メモ Spring Boot + Thymeleafでエラー画面をカスタマイズする

0 件のコメント:

コメントを投稿