java - 在 Java Controller (PlayFramework) 中执行 Scala Action

标签 java scala playframework playframework-2.2 securesocial

我使用 Playfrawork 和 Java 创建了一个应用程序。

我在上面使用 SecureSocial 插件。 在我的 Controller 中有一种方法,其中一个过程是在 SecureSocial 中执行句柄启动重置密码。 但该方法是用 Scala 编写的。

如果我像这样在我的 Java 源代码中引用该方法:

Registration.handleStartResetPassword();

什么都没发生!如果我更改为以下行,则相同:

Registration.handleStartResetPassword().apply();

与以下源代码块相同:

play.api.libs.iteratee.Iteratee<byte[], SimpleResult> it = Registration.handleStartResetPassword().apply(ctx()._requestHeader());
Future<SimpleResult> future = it.run();
Option<Try<SimpleResult>> result = future.value();
SimpleResult res = result.get().get();

我删除了所有代码并尝试执行 Secure Social 代码但没有任何反应。 这是我的方法:

public static Result resetPassword() {
    Registration.handleStartResetPassword().apply();
    return TODO;
}

我的路线是这条:

POST    /reset    controllers.ProfileController.resetPassword

已编辑:添加了另一种我尝试运行但没有运行该方法的方法。

最佳答案

当您调用 handleStartResetPassword() 时你得到一个 Action 的实例返回,在您通过调用 Action.apply(request) 向其提供特定请求之前,它实际上不会执行任何操作。然后它将实际运行该 Controller 操作的逻辑并返回 Future<Result> .

不完全确定您是否可以向后桥接并从中获得 Play Java 异步结果。

关于java - 在 Java Controller (PlayFramework) 中执行 Scala Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24623482/

相关文章:

java - Spark GraphX 的 DFS 性能与简单 Java DFS 实现的比较

playframework - 将 Play JSON 库添加到 sbt

java - 如何在应用程序启动时选择 Handle MenuItem

java - 维基百科抓取的 JWikiDocs 问题

compiler-construction - 是否可以将Scala程序编译为可在任何JVM上运行,而无需在给定机器上安装Scala?

xml - 如何在scala的xml中输出{name},而不是转换它?

java - 使用 Google Youtube API

java - 从 java.util.concurrent.Future<T> 到 play.libs.F.Promise<T> : How to do that in Java?

java - Eclipse 调试器总是阻塞在 ThreadPoolExecutor 上,没有任何明显的异常,为什么?

java - 如何忽略特定 jar 的 JAVA_TOOL_OPTIONS ?