【问题标题】:play framework javascript Routing Failed to load resource播放框架javascript路由加载资源失败
【发布时间】:2015-04-12 15:39:25
【问题描述】:

我正在尝试在我的 Play Framework 应用程序中进行一些 Javascript Routing,但遇到了一些错误:

我有一个 ID 为 #next 的按钮,它应该使用 Ajax 将一些新图像和文本加载到名为 #content 的 div 中。

在我的 Application.java 中,我实现了以下两种方法:

public static Result nextUser(int i) {
    return ok(content.render(users.get(i)));
}

public static Result javascriptRoutes() {
    response().setContentType("text/javascript");
    return ok(
            Routes.javascriptRouter("jsRoutes",
                    controllers.routes.javascript.Application.nextUser()
            )
    );
}

制作了这个 content.scala.html 文件:

@(user: User)
<img id="user" src="@routes.Assets.at(user.getImg())" />
<h2>@user.getStatus()</h2>

将此添加到路由文件中:

GET        /nextuser                    controllers.Application.nextUser(i: Int)

GET        /assets/javascripts/routes   controllers.Application.javascriptRoutes()

然后尝试了这段 Javascript 代码:

<script type="text/javascript" src="@routes.Application.javascriptRoutes()"></script>
<script>
    var userIndex = 1;

    $("#next").click(function() {
        jsRoutes.controllers.Application.nextUser(userIndex).ajax({
        success : function(data) {
            $("#content").html(data);
        },
        error: function(err) {

        }
        });
    });

</script>

在 javascriptRoutes 方法的 Application.java 文件中,控制器。路由。找不到。

有人知道导致错误的原因吗?

编辑:

多亏了这个,我可以解决最初的错误: Unable to resolve reverse routing methods in IntelliJ

现在看起来像这样:

即使明确定义,也找不到 nextUser 方法。

当我使用 activator compile 编译应用程序并使用 activator run 运行它时,我的 chrome 控制台看起来像这样:

所以仍然找不到路由文件。

【问题讨论】:

  • 为什么标记 scala?
  • 您能否尝试更好地解释您要达到的目标?
  • 使用JavaScriptReverseRouter,如文档中所述:playframework.com/documentation/2.5.x/… -- 请注意embedded router 不使用具有参数的方法;你真的必须使用JavaScriptReverseRouter

标签: java javascript playframework playframework-2.3


【解决方案1】:

好的,我可以解决这个问题:

Can't get javascriptRoutes to work with Play Framework 2

问题是我的路线文档中的顺序。一旦我在 javascript 路由之前切换了资产声明,它就起作用了:

# Javascript Router
GET        /assets/javascripts/routes        controllers.Application.javascriptRoutes()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    相关资源
    最近更新 更多