基于Spring Boot tutorial提供动态网页内容,我想在Kotlin中做同样的事情。我的Kotlin项目基于tutorial。运行这两个教程的代码我没有问题。
根据我的理解,我只需要添加一个控制器来返回对模板的引用。
这里HelloController.kt
(位于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"
}
}
以下是我想访问的简单"模板",index.html
(位于src / main / resources / templates / index.html下):
<html>
<head>
</head>
<body>
Bar
</body>
</html>
从技术上讲,如果我转到localhost:8080
我应该index.html
显示我不知道。相反,我有404错误。我确实显示了已记录的内容,因此调用了hello
方法。我究竟做错了什么?我没有在Spring Boot教程中看到任何配置文件,所以我猜Spring正在做一些事情,以便从函数返回的内容中获取正确的资源。
编辑:
请求我的graddle导入:
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 :(得分:1)
我看起来spring-boot-starter-web
依赖关系不足以设置视图解析。尝试添加spring-boot-starter-thymeleaf
依赖项, Thymeleaf 应该处理您的html文件。
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
您的HTML文件应该在src/main/resources/templates
中,否则可能无法自动检测到。