Playframework 播放404页的框架静态资源(资产)

Playframework 播放404页的框架静态资源(资产),playframework,static-resource,Playframework,Static Resource,我使用的是PlayFramework2.3版本,并提供静态htmlNot使用PlayTemplateEngine 将静态资源从/public文件夹映射到/assets URL路径 GET/assets/*file controllers.assets.atpath=/public,file 我想提供404页时,用户试图访问错误的网址 例如,我在公共资产文件夹中有2个html。 public/html/a.html public/html/b.html public/error/404.html

我使用的是PlayFramework2.3版本,并提供静态htmlNot使用PlayTemplateEngine

将静态资源从/public文件夹映射到/assets URL路径 GET/assets/*file controllers.assets.atpath=/public,file

我想提供404页时,用户试图访问错误的网址

例如,我在公共资产文件夹中有2个html。 public/html/a.html public/html/b.html public/error/404.html

URL:localhost/assets/html/a.html->200确定 URL:localhost/assets/html/b.html->200确定 URL:localhost/assets/html/c.html->404未找到页面,因此我想提供此页面URL:localhost/assets/error/404.html

我已经尝试使用Global.onHandlerNotFound和Global.onBadRequest,但这在静态资源的情况下不起作用


请帮帮我。谢谢。

首先,将404错误的静态html放在public/文件夹中,例如public/error404.html

然后,在onHandlerNotFound方法中,应该调用Play docs tell

如果框架找不到请求的操作,则 将调用onHandlerNotFound操作

您将返回该页面。所以,你可以这样退

return Results.redirect(routes.Assets.at("error404.html"));
我想我误解了你的问题


请注意,此方法应该处理未找到的操作。如果您想处理未找到的资产,那么我认为您必须修改内置资产控制器,一旦有了它,处理资产响应的操作,assets.at操作。如果没有资产,ir可能只调用Results.notFound。它不调用任何全局方法,因此您可以处理错误,这就是重点。

感谢您的回复。我正试图通过你的回答来解决我的问题。但它不起作用。无论如何,谢谢你。