【问题标题】:Render a Play!Framework2 javascript as template?将 Play!Framework2 javascript 渲染为模板?
【发布时间】:2013-04-26 11:34:21
【问题描述】:

我想从 Play!Framework 2 中的模板返回一个 .js 文件。

我是这样做的:

在我的视图文件夹中,我创建了一个模板文件:

initials.scala.js

包含类似的东西:

{
    'data': @Model.find.findList()
}

然后,在我的控制器中:

public static Result initials() {
    return ok(views.js.initials.render());
}

这对我来说很简单,但我得到了这个错误:

错误:views.js 包不存在

我做错了什么?

如果我将 js 重命名为 txt(在文件名和控制器中的包调用中),一切正常。但是如果我改成js,就会报错。

【问题讨论】:

标签: templates playframework-2.1


【解决方案1】:

您没有做错任何事情,Play 允许您仅使用 .html.xml.txt 扩展视图,因此您需要使用其中之一。

从技术角度来看,你将使用哪一个并不重要,无论如何你需要从控制器返回它作为 JavaScript,即:

public static Result initials() {
    return ok(views.html.initials.render()).as("application/javascript");
}

【讨论】:

  • 很伤心,有什么原因吗?我可以理解 .exe 之类的文件,但对于 .js 和 .css 等可能包含变量的文件,它可能很有用。
【解决方案2】:

这可以通过在路由定义中放置到特定资产的路由来实现。

即。 GET /assets/javascripts/initials.js controllers..initials()

【讨论】:

    【解决方案3】:

    您可以拥有一个scala.js 文件,但您不能使用views.js.initials.render() 而是使用js.initials.render() 来调用它

    至少在 Scala 中它适用于 Play 2.2

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2013-12-26
      • 2012-08-20
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2012-10-27
      相关资源
      最近更新 更多