Игровые рамки статических ресурсов (ресурсов) на 404 странице

Я использую Play Framework 2.3 версии и предоставляю статический HTML (не использует движок шаблонов Play).

# Сопоставьте статические ресурсы из папки / public в URL-адрес / assets GET /assets/*file controllers.Assets.at(path="/public", file)

Я хотел бы предоставить страницу 404, когда пользователь пытается получить доступ к неправильному URL

например у меня есть 2 HTML в папке общих активов.
публичный / html / a.html
публичный / html / b.html
общественности / ошибка / 404.html

URL: localhost / assets / html / a.html -> 200 ОК
URL: localhost/assets/html/b.html -> 200 ОК
URL: localhost/assets/html/c.html -> 404 NOT FOUND PAGE, поэтому я хотел бы предоставить эту страницу (URL: localhost/assets/error/404.html)

Я уже пытаюсь использовать Global.onHandlerNotFound и Global.onBadRequest, но это не работает в случае статических ресурсов.

Пожалуйста, помогите мне. Спасибо.

1 ответ

Прежде всего, поместите ваш статический html для ошибки 404 в public / folder, например (public/error404.html)

Затем в onHandlerNotFound должен вызываться метод, который, по словам Play docs, должен быть вызван.

Если среда не находит Action для запроса, будет вызвана операция onHandlerNotFound

Вы вернете эту страницу. Таким образом, вы можете вернуть его таким образом

return Results.redirect(routes.Assets.at("error404.html"));

Я думаю, что я неправильно понял ваш вопрос.

Обратите внимание, что этот метод должен обрабатывать не найденные действия. Если вы хотите обработать не найденные активы, то я думаю, что вы должны изменить встроенный контроллер активов, если он есть, действие, которое обрабатывает ответы активов, действие Assets.at. Если актива нет, возможно, он просто вызывает Results.notFound(). Он не вызывает никакого глобального метода, чтобы вы могли обработать ошибку, вот в чем дело.

Другие вопросы по тегам