Tec*_*mag 5 playframework playframework-2.4
此前一个问题可以作为"子模块"对于当前讨论的意义的基线:Play Framework [2.4.x]使用子模块
如果您了解Play子模块,那么给定该上下文如何进入子模块上的路由条目以公开"public"文件夹中的资产?
每当我尝试创建一个基本条目(如下所示)时,我的整个根模块都无法编译单个路由,但我没有得到"可用"错误或其他可能发生的指示.
GET /assets/*file controllers.Assets.at(path="/public", file)
Run Code Online (Sandbox Code Playgroud)
即使我注释掉根项目中的条目,也会发生编译器错误.
由于我所有的子模块控制器都有一个前缀我试过(当然)
GET /assets/*file controllers.submodule.Assets.at(path="/public", file)
Run Code Online (Sandbox Code Playgroud)
唉,这也不起作用,但至少我得到一个有用的错误告诉我 type Assets is not a member of package controllers.submodule
有什么建议?
PS:是的我还尝试从root的路由文件中取出条目,以防它只是一个名称空间冲突...
您必须在子模块控制器包中创建资产控制器:
package controllers.submodule
class Assets extends AssetsBuilder(DefaultHttpErrorHandler)
Run Code Online (Sandbox Code Playgroud)
然后在子模块的路由器文件(应命名为 submodule.routes)中声明此控制器的路由:
GET /submodule/public/*file controllers.submodule.Assets.versioned(path="/public", file: Asset)
Run Code Online (Sandbox Code Playgroud)
最好在路由中添加子模块的名称前缀,以避免路由冲突,以防万一您有其他带有静态路由条目的子模块名称。
另一件事:所有静态文件都托管在根模块的“lib”文件夹中:
lib/submodule/css...
lib/submodule/js...
Run Code Online (Sandbox Code Playgroud)
所以你必须像这样更新你的观点:
<script type="text/javascript" src="@controllers.submodule.routes.Assets.versioned("lib/submodule/js/your-submodule-script.js")"></script>
Run Code Online (Sandbox Code Playgroud)
编辑:不要忘记将其添加到根模块的路由文件(命名路由)中
-> / submodule.routes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1051 次 |
| 最近记录: |