我试图创建简单的Android应用程序使用ktor作为设备上的服务器.
我已经设法在我的android项目中为ktor 1.6.8添加了dependecies,我也试着按照我管理的文档来托管和渲染非常基本的html页面,但是当我尝试使用thymeleaf的模型数据属性时,我遇到了一些奇怪的问题-页面根本不渲染。
即:
<html xmlns:th="http://www.thymeleaf.org">
<body>
<h1 th:text="'Hello, ' + ${user}"></h1>
</body>
</html>
这将渲染Hello, ThymeleafUser(id=1, name=Scott)
,但将更改为:
<html xmlns:th="http://www.thymeleaf.org">
<body>
<h1 th:text="'Hello, ' + ${user.name}"></h1>
</body>
</html>
根本不呈现页面(而是呈现预期的Hello, Scott
)
服务器的代码或多或少取自ktor generator,我将其放入单个kotlin类中:
package com.example.testapp
import io.ktor.application.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.thymeleaf.*
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver
import kotlin.concurrent.thread
class Server {
companion object {
fun startServer(){
thread(start=true) {
embeddedServer(Netty, host = "0.0.0.0", port = 12345) {
install(Thymeleaf){
setTemplateResolver(ClassLoaderTemplateResolver().apply {
prefix = "templates/"
suffix = ".html"
characterEncoding = "utf-8"
})
}
routing {
get("/html-thymeleaf") {
val sampleUser = ThymeleafUser(1, "Scott")
call.respond(ThymeleafContent("index", mapOf("user" to sampleUser)))
}
}
}.start(wait = true)
}
}
}
}
data class ThymeleafUser(val id: Int, val name: String)
Server.startServer()
在Andorid主活动onCreate
方法中调用。
我的问题是:为什么会出现这种情况?为什么我无法访问示例中或github上显示的"用户"属性。
也许这只是一个菜鸟问题,但我没有看到任何日志,任何堆栈跟踪,没有任何指导我如何解决这个问题。
1条答案
按热度按时间7cwmlq891#
不幸的是,为了计算
${user.name}
这样的表达式,Thymeleaf使用了java.beans
包中的类,而这些类在Android上是不可用的。