Я ищу четкую документацию о том, как я могу создать маршрутизатор для Spring Webflux в kotlin, который направляет пользователя как на конечные точки Rest, так и на веб-конечные точки.
Я сделал маршрутизатор, чтобы сделать остальные точки без проблем. но не мог сделать это для Интернета, всегда получая сообщение об ошибке:
java.lang.IllegalArgumentException: не удалось разрешить представление с именем «индекс»
at org.springframework.web.reactive.function.server.DefaultRenderingResponseBuilder$DefaultRenderingResponse.lambda$writeToInternal$1(DefaultRenderingResponseBuilder.java:197) ~[spring-webflux-6.0.7.jar:6.0.7]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ Handler com.springinaction.router.config.WebConfiguration$$Lambda$524/0x0000000800519368@46b9842f [DispatcherHandler]
*__checkpoint ⇢ HTTP GET "/index" [ExceptionHandlingWebHandler]
Original Stack Trace:
Пробовал роутер несколькими способами
@Bean
fun router(): RouterFunction<*> {
return resources("/**", ClassPathResource("/templates/"))
.andOther(
route(GET("/index"), HandlerFunction {
ServerResponse
.ok()
.render("index")
})
.andOther (
route(
GET("/hello"), HandlerFunction {
ServerResponse
.ok()
.contentType(MediaType.TEXT_HTML)
.bodyValue("Hello Router World")
}
)
)
)
}
и так тоже
@Bean
fun router(): RouterFunction<*> {
return router {
GET("/hello") {
ServerResponse
.ok()
.contentType(MediaType.TEXT_HTML)
.bodyValue("Hello Router World")
}
GET("/index") {
ServerResponse
.ok()
.render("index")
}
}
}
такая же ошибка...
как я могу заставить маршрутизатор разрешать файл index.html и загружать его из пакета /templates?
с уважением
извините, что сохранил это слово, я должен был исправить его. потому что я использовал несколько имен... я исправлю это
любая идея сделать это правильно ??




Решение было довольно простым, просто удалите ServerResponse, и все заработает.
@Bean
fun myRouter(): RouterFunction<*> {
return router {
GET("/router") {
ok().render("mypage.html")
}
}
}
либо так, либо вложенным способом, либо иначе будет работать...
@Bean
fun myRouter(): RouterFunction<*> {
return router {
accept(MediaType.TEXT_HTML).nest {
GET("/router") {
ok().render("mypage.html")
}
}
}
}
журналы говорят, что вы делаете
GET "/generate"вы не объявили ни одного такого обработчика