【问题标题】:Play 2.3/Angular JS $resource/routing issuePlay 2.3/Angular JS $resource/routing 问题
【发布时间】:2014-11-13 21:46:34
【问题描述】:

所以我正在尝试将我的结果列表中的单个 solr 文档 AJAX 到“文档视图”视图。我正在尝试使用 AngularJS 到 AJAX 到我的视图渲染方法并以这种方式显示文档,但我似乎无法让角度工作,我不确定我在 Play 方面是否正确地做事.你至少愿意告诉我我正在尝试做的事情是否有效吗? Angular 错误来自 docText.text();称呼。这是我的代码:

角度控制器代码:

    var docText = $resource("http://localhost:9000/views/full-doc-text.html", {
        text: {method: 'PUT'}
    });

    $scope.handleViewText = function(value) {
        docText.text({doc: value});
    }

Java 代码:

    public static Result viewText() {
        JsonNode json = request().body().asJson();

        //do stuff here

        return ok(viewtext.render(json));
    }

路线:

    GET     /views/full-doc-text.html            controllers.Application.viewText()

【问题讨论】:

    标签: angularjs playframework routes playframework-2.0 angularjs-routing


    【解决方案1】:

    我发现上面的代码存在三个问题;

    1.docText资源的定义不正确。如果您阅读 angularjs 手册 here,您会看到 $resource 有 4 个参数。第一个是资源 url,第二个是参数默认值,第三个是自定义操作,第四个是资源选项,其中最后三个是可选的。在您的代码中,您将自定义操作作为第二个参数传递,它应该是第三个。而且由于您的资源 url 中没有任何参数,因此第二个参数必须为空。所以第一个更正是:

    var docText = $resource("http://localhost:9000/views/full-doc-text.html", null, {
        text: {method: 'PUT'}
    });
    

    2.您将text 操作的HTTP 方法定义为PUT,但是在您的路由文件中,您正在处理您所需操作的GET 请求。您应该将路线定义更改为:

    PUT     /views/full-doc-text.html            controllers.Application.viewText()
    

    3.PUT 方法通常用于实现 RESTFULL 服务时的更新操作。在您的情况下,您似乎没有更新任何内容。所以我建议使用POST 方法只是为了约定。

    【讨论】:

    • 谢谢!对一些懒惰的代码感到抱歉(主要是在我的路由文件中修复的路由,我只是没有在此处进行更正,PUT 也在那里,因为我只是在 POST 失败后尝试操作)。
    • 看一下,路由 /views/full-doc-text.html 应该是一个 GET 调用,因为它将向客户端提供 full-doc-text.html 页面,那么我是否应该有一个“catch” POST 方法来捕获 post 调用,处理 JSON 上的任何内容,然后调用 GET 方法来提供完整的文档文本页面?
    • 抱歉,我无法弄清楚您的用例。我可以从您上面的代码中得出的结论是;您正在向后端提交一些 json 数据,对其进行操作,然后对其进行渲染。在这种情况下,/views/full-doc-text.html 路由需要与带有正文(PUT 或 POST)的 HTTP 方法相对应。 GET 方法是不明智的,因为您使用 $scope.handleViewText 提交数据。如果你能澄清你的用例,我可能会提出一些解决方案。祝你好运;)
    • 是的,在周末回来看它之后,我不知道我要做什么。我不应该在沮丧的时候编码,因为这样就会发生。你是对的,我错了,我想错了。感谢您帮助我纠正我的资源方法。
    猜你喜欢
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多