概要
現在、Kotlin + Spring Bootで開発をしているのですが その中で詰まった、ハマってしまった部分を紹介します。
今回はThymeleafテンプレートに関して。
かなり開発序盤の内容です。主にセットアップ。
ハマった問題
その1
前回のブログ で紹介したようにプロジェクトを作成し、その後ログイン画面に遷移しようとしたときの話。
import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RestController @RestController class LoginController { @GetMapping("/") fun index(): String { return "login" } }
こんな感じで初めは書いていたのですが、その結果がこちら
...いやいやログイン画面だけど。。笑
こうなってしまった原因は、@RestController
の部分。
ここは @Controller
にしてあげなければいけません。
また、今回htmlファイルは、
src/main/resources/templates/login.html
というファイルを作成しています。
デフォルトだと resources/templates
直下のhtmlファイルを探しにいっているのでこの辺も注意が必要です!
(ここも結構時間かかった。。)
その2
もう一つ時間がかかったのがこちらのエラー。
一つ目の問題と同時に起こっていたので、初めはルーティングの問題だと思ってファイル名変えたり、ファイルの配置変えたり色々したのですが全然うまくいきませんでした。
諦めかけてたときにふと画面上のエラーメッセージを読むと、Exception parsing document
。
あれ、これってもしかしてParseに失敗してる!??
ターミナルを確認してみると、
org.xml.sax.SAXParseException: 要素タイプ"img"は、対応する終了タグ"</img>"で終了する必要があります。
おー!確かにちゃんとエラー出てた!!
どうやらimg
タグやinput
タグを書くときには、閉じタグが必要になるようです。ちょっとめんどくさい。。
閉じタグを追加してあげると無事にログイン画面が表示されました。
よかったよかった
さいごに
Thymeleafを使用するには、build.gradle
のdependenciesに以下を追加してあげる必要があるみたいです。(参考サイトより)
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
最後に参考にしたサイトを紹介しておきます。