geliefert werden. Basierend auf einem Spring Boot tutorial, um dynamische Webinhalte zu bedienen, wollte ich das gleiche in Kotlin tun. Mein Kotlin-Projekt basiert auf dieser tutorial. Ich habe kein Problem, den Code beider Tutorials laufen zu lassen.Dynamische Webinhalte können nicht mit Spring Boot und Kotlin
Nach meinem Verständnis musste ich nur einen Controller hinzufügen, der einen Verweis auf eine Vorlage zurückgeben würde.
Hier HelloController.kt
(unter src/main/Kotlin/foo/Controller):
package foo.controller
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.RequestMapping
@Controller
class HelloController {
private val log = LoggerFactory.getLogger(HelloController::class.java)
@RequestMapping("/")
fun hello(): String {
log.info("foo")
return "index"
}
}
Hier ist die einfache "Vorlage", index.html
, die ich unter src (befindet zugreifen möchten/main/resources/templates/index.html):
<html>
<head>
</head>
<body>
Bar
</body>
</html>
technisch gesehen, wenn ich localhost:8080
gehe ich sollte index.html
haben angezeigt, die ich nicht. Stattdessen habe ich einen 404 Fehler. Ich habe die geloggten angezeigt, so dass die hello
Methode aufgerufen wird. Was mache ich falsch? Ich habe keine Konfigurationsdatei im Spring Boot-Lernprogramm gesehen, also denke ich, dass Spring etwas unter der Haube tut, um die richtige Ressource von dem zu erhalten, was eine Funktion zurückgibt.
EDIT:
Hat meine graddle Einfuhren beantragt:
buildscript {
val springBootVersion = "1.4.3.RELEASE"
val kotlinVersion = "1.0.6"
extra["kotlinVersion"] = kotlinVersion
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlinVersion")
classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlinVersion")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
}
}
apply {
plugin("kotlin")
plugin("kotlin-spring")
plugin("kotlin-jpa")
plugin("org.springframework.boot")
}
version = "0.0.1-SNAPSHOT"
configure<JavaPluginConvention> {
setSourceCompatibility(1.8)
setTargetCompatibility(1.8)
}
repositories {
mavenCentral()
}
val kotlinVersion = extra["kotlinVersion"] as String
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("com.h2database:h2")
compile("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
compile("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
compile("org.apache.commons:commons-io:1.3.2")
compile("org.apache.commons:commons-lang3:3.3.1")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
Veröffentlichen Sie hier Ihre Groß-/Kleinschreibung Abhängigkeiten. – Januson
Ich habe die ganze Datei hinzugefügt, wenn das Problem von etwas nicht so offensichtlich (Und ich bin auch völlig neu zu Gradle: p) – Flanfl