2014-12-11 68 views
0

我正在使用play framework 2.3版本並提供靜態html(不使用播放模板引擎)。爲404頁播放框架靜態資源(資產)

#Map靜態資源從/公用文件夾到/資產URL路徑 GET /資產/ *文件controllers.Assets.at(PATH = 「/公衆」,文件)

我想提供404頁當用戶嘗試訪問錯誤的網址

例如我在公共資產文件夾中有2個html。
公共/ HTML/a.html
公共/ HTML/b.html
公共/錯誤/ 404.html

網址:本地主機/資產/ HTML/a.html - > 200 OK
網址:本地主機/資產/ html/b.html - > 200行
URL:localhost/assets/html/c.html - > 404未找到頁面,所以我想提供此頁面(URL:localhost/assets/error/404 .html)

我已經嘗試使用Global.onHandlerNotFound和Global.onBadRequest但是這不工作的情況下靜態資源。

請幫幫我。謝謝。

回答

0

首先,把你的HTML靜態頁面404錯誤在公共/文件夾,如(公開/ error404.html)

然後,在onHandlerNotFound方法,從而起到文檔講的是應該被稱爲

如果框架沒有找到請求的動作, onHandlerNotFound操作將被稱爲

您將返回該頁面。所以,你可以回到它的方式

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

我想我誤解你的問題。

注意,該方法應該處理未找到Actions。如果你想處理未找到的資產,那麼我認爲你必須修改內置的資產控制器,一旦它出現,處理資產響應的操作,即Assets.at操作。如果沒有資產可能只是調用Results.notFound()。它不會調用任何全局方法,因此您可以處理錯誤,這就是要點。

+0

謝謝您的回覆。我試圖通過你的回答解決我的問題。但它不起作用。無論如何謝謝。 – 2014-12-15 01:38:50