在Java控制器(PlayFramework)中执行Scala操作

时间:2014-07-08 04:01:24

标签: java scala playframework playframework-2.2 securesocial

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

我正在使用SecureSocial插件。 在我的控制器中有一个方法,其中一个过程是在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();

我删除了所有代码并尝试执行安全社交代码,但没有任何反应。 这是我的方法:

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

我的路线就是这个:

POST    /reset    controllers.ProfileController.resetPassword

编辑:添加了另一种我试图运行的方式,但只是没有让方法运行。

1 个答案:

答案 0 :(得分:0)

当您致电handleStartResetPassword()时,您会收到Action的实例,在您通过调用Action.apply(request)来提供特定请求之前,它实际上并没有做任何事情。然后实际运行该控制器操作的逻辑并返回Future<Result>

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