Как мне вернуть активы с кодом состояния 404 в игре?

#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)
    }
}