gpt4 book ai didi

playframework - Play Framework [2.4.x] 如何在子模块的路由文件中处理公共(public) Assets

转载 作者:行者123 更新时间:2023-12-03 16:43:31 25 4
gpt4 key购买 nike

就当前讨论的目的而言,前一个问题可以作为“子模块”含义的基线:Play Framework [2.4.x] Working with Sub Modules

如果您了解 Play 子模块,那么在给定上下文的情况下,如何在子模块上输入路由条目以公开“公共(public)”文件夹中的 Assets ?

每当我尝试创建一个基本条目(如下所示)时,我的整个根模块都无法编译单个路由,但我没有收到“可用”错误或其他指示可能发生的事情。

GET   /assets/*file  controllers.Assets.at(path="/public", file)

即使我注释掉根项目中的条目,也会出现编译器错误。

因为我所有的子模块 Controller 都有一个前缀,所以我试过了(当然)
GET   /assets/*file  controllers.submodule.Assets.at(path="/public", file)

唉,这也不起作用,但至少我得到一个有用的错误,告诉我 type Assets is not a member of package controllers.submodule
有什么建议么?

PS:是的,我也尝试从根的路由文件中取出条目,以防它只是 namespace 冲突......

最佳答案

您必须在子模块 Controller 包中创建一个 Assets Controller :

package controllers.submodule

class Assets extends AssetsBuilder(DefaultHttpErrorHandler)

然后在子模块的路由器文件(应该命名为 submodule.routes)中为这个 Controller 声明一个路由:
GET    /submodule/public/*file    controllers.submodule.Assets.versioned(path="/public", file: Asset)

如果您有其他带有静态路由条目的子模块名称,最好在路由前加上子模块的名称以避免路由冲突。

还有一件事:所有静态文件都托管在根模块的“lib”文件夹中:
lib/submodule/css...
lib/submodule/js...

所以你必须像这样更新你的观点:
<script type="text/javascript" src="@controllers.submodule.routes.Assets.versioned("lib/submodule/js/your-submodule-script.js")"></script>

编辑:不要忘记将其添加到根模块的路由文件(命名路由)中
-> / submodule.routes

关于playframework - Play Framework [2.4.x] 如何在子模块的路由文件中处理公共(public) Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com