HTMLController を SpringbootResource にする
package com.example.springboot import org.springframework.stereotype.Controller import org.springframework.ui.Model import org.springframework.ui.set import org.springframework.web.bind.annotation.GetMapping @Controller class HtmlController { @GetMapping("/") fun nanika(model: Model): String { model["title"] = "SpringBlog" return "index" } }
これが HtmlContorller.kt というファイルで書かれていて
アプリを起動すると index に渡したものを表示する
MVC のアーキにしたがってコントローラーと名付けていた
CA に変えるので リソースにする
@Controller class SpringbootResource { @GetMapping("/") fun root(model: Model): String { model["title"] = "Springboot Root" return "index" } }
これでリソースとして使う。
Usecase を呼びやすくする
fun getTaroHanakoName():String { val taroName = taro.findName() val hanakoName = hanako.findName() return "$taroName,$hanakoName"; }
Usecase の関数を呼びやすいまとめるものにする
SpringbootResource で Model と Template を噛ませながら Usecase を呼ぶ
@GetMapping("/names") fun taro(model:Model): String { model["title"] = getTaroHanakoName() return "index" }
model と index のテンプレートを噛ませて
Usecase からの値を出力する
これで /names にアクセスした時に Usecase -> Driver まで動いて
中身を web に出せた。
2022-08-29 00:14:57.777 ERROR 1463816 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "Taro": Error resolving template [Taro], template might not exist or might not be accessible by any of the configured Template Resolvers
なお、 Thymleaf を使ってしまっているので
Template と Model ナシで直接 Usecase を
Getmapping に噛ませ用途すると失敗する。
まとめ
Kotlin Springboot で Rest/Resource 層から
Usecase -> Driver としてデータをとってくるためには
旧来の Controller の書き方で書いて、名前を Resource にして
Usecase の呼び出しの結果を model に渡して
template で表示する。
Top comments (0)