2017-01-27 3 views
0

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") 
} 
+0

Veröffentlichen Sie hier Ihre Groß-/Kleinschreibung Abhängigkeiten. – Januson

+0

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

Antwort

1

I sieht aus wie spring-boot-starter-web Abhängigkeit Setup Ansicht nicht genug ist, zu lösen. Versuchen Sie spring-boot-starter-thymeleaf Abhängigkeit hinzuzufügen und Thymeleaf sollte Ihre HTML-Datei behandeln.

compile("org.springframework.boot:spring-boot-starter-thymeleaf") 

Ihre HTML-Dateien in src/main/resources/templates oder sie könnten nicht automatisch erkannt werden sollen.

+0

Tatsächlich war das so einfach wie das! Ich fügte die Abhängigkeit hinzu und es funktionierte gut. Danke vielmals! – Flanfl

Verwandte Themen