Play框架资产路由在版本2.4.x中不起作用

时间:2016-08-26 13:42:01

标签: java playframework

我正在将我们的应用程序从Play 2.3.x迁移到2.4.x.随着远离静态路由的迁移,我显然失去了重定向到某些资产的能力。该应用程序实现了一个租户功能,可以将其附加到URL(localhost:9000 / Tenant /),然后将您重定向到登录页面,并在后台设置适当的租户。默认租户(用于开发目的)可以通过不使用url的附录来访问(localhost:9000 /)。

问题是,在设置租户后,我使用以下内容重定向到app / index.html:

return redirect(query != null ? "app/index.html?" + query : "app/index.html");

重定向有效但不幸的是我得到了#34;未找到动作 请求' GET /app/index.html'"。如果我手动重定向,我也无法访问资产。

在应用程序的路由文件中,以下路由条目应该正确处理此重定向,我错了吗?

# Map static resources from the /public/app folder to the /app URL path
GET    /app/*file   controllers.Assets.at(path="/public/app", file)

遗憾的是,除了以下内容之外,日志并没有特别说明:

**** [TRACE] Http request received by netty: DefaultHttpRequest(chunked: false)
****         GET /app/index.html HTTP/1.1
****         Host: localhost:9000
****         Connection: keep-alive
****         Upgrade-Insecure-Requests: 1
****         User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
****         Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
****         Accept-Encoding: gzip, deflate, sdch
****         Accept-Language: en-US,en;q=0.8,de;q=0.6
****         Cookie: PLAY_SESSION="f2069c9ef539f8d3fe9d07327a3c65bd4a45cb79-MANDT=0B7ABE451F3441A5AB93799DBC8621EF" [play.core.server.netty.PlayDefaultUpstreamHandler]
**** [TRACE] Serving this request with: <function1> [play.core.server.netty.PlayDefaultUpstreamHandler]
**** [TRACE] Invoking action with request: GET /app/index.html [play.api.mvc.Action]

我在其他情况下[Play Framework Routes not working]看到人们在控制台上收到错误,说明哪些路线已经尝试过。

这适用于2.3.x,但不再适用于2.4.x.我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我可以解决这个问题:

我意识到在迁移时,我没有正确使用迁移指南来使用SbtWeb。

https://www.playframework.com/documentation/2.5.x/AssetsOverview#Reverse-routing-and-fingerprinting-for-public-assets

整个配置缺少enablePlugins(...,SbtWeb),我缺少sbt-gzip等。请确保正确遵循指南并将配置与新创建的新项目进行比较。后者在寻找可以在迁移时轻松监督的标准配置时帮助很大。