#scala #playframework
#scala #playframework
Вопрос:
В настоящее время у меня есть приложение для воспроизведения с Scala, в котором у меня есть интерфейс в общедоступной папке в качестве SPA. У меня есть маршрут / 404, в котором я хочу вернуть интерфейс с кодом состояния 404. Однако, если я напишу:
def returnNotFound(): Action[AnyContent] = Action {
NotFound(assets.at("index.html"))
}
Затем я получаю ошибку компиляции, потому что активы возвращают действие, а не записываемое.
Итак, как я могу вернуть index.html в общей папке с кодом состояния 404?
Ответ №1:
Проблема здесь в том, что assets.at("index.html")
возвращает Action[AnyContent]
, который, как предполагается, является методом возврата Controller
, следовательно, для изменения статуса вам нужно изменить результат с assets.at
like:
def returnNotFound(): Action[AnyContent] = Action.async { implicit request =>
assets.at("index.html")(request).map { result =>
new Result(result.header.copy(status = 404), result.body)
}
}