【问题标题】:Play Framework: Cannot find symbol "async"播放框架:找不到符号“异步”
【发布时间】:2014-10-12 06:40:20
【问题描述】:

我正在使用Play Framework,并尝试使用内置的WS 支持发出HTTP 请求。每当我尝试在控制器中发出此 HTTP 请求时,我都会收到此错误

error: cannot find symbol

代码

public static Result foo(){
    return async(//ERROR ON THIS LINE FOR `async()`
        WS.url(GoogleStrategy.getTokenUrl).post(getTokenUrlParams).map(
            new F.Function<WSResponse, Object>() {
                    @Override
                    public Object apply(WSResponse wsResponse) throws Throwable {
                        return ok(wsResponse.asJson());
                    }
            }
        )
    );
}

这很奇怪,因为在文档中显示的所有示例中,这似乎是做我想做的事情的正确方法。

【问题讨论】:

    标签: java web-services playframework playframework-2.0


    【解决方案1】:

    您几乎肯定是在查看旧版本的文档。不再需要async()

    当前版本:https://www.playframework.com/documentation/2.3.x/JavaAsync

    public static Promise<Result> foo(){
      return WS.url(GoogleStrategy.getTokenUrl).post(getTokenUrlParams).map(
        new F.Function<WSResponse, Result>() {
          @Override
          public Object apply(WSResponse wsResponse) throws Throwable {
            return ok(wsResponse.asJson());
          }
        }
      );
    }
    

    【讨论】:

    • 请注意,要包含 Promise&lt;Result&gt; 作为返回类型,我必须将其更改为 F.Promise&lt;Result&gt;,如果这有帮助...
    • Ryan,将new F.Function&lt;WSResponse, Object&gt;() 更改为new F.Function&lt;WSResponse, Result&gt;()(Object' -&gt; Result`),我会接受你的回答。几乎是正确的,只是一个简单的类型错误。
    • 好的,我做出了改变。
    猜你喜欢
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多