如何从 Play 框架中的结果中获取状态代码

Kdg*_*Dev 4 java playframework-2.0

我正在 Play 框架中的 Java 项目,版本 2.2.1

我正在尝试对我的模型实施批处理操作,并返回一条消息,显示每个模型实例上查询的状态代码。所以这是一个调用另一个控制器方法并从中获取结果的控制器方法。

问题是,我需要从该返回中获取该状态代码,因为它必须在消息中。

似乎没有办法获得这个状态码。

我试过这个:检查结果是否是一个好的游戏框架

但它不会编译,Java 说无法完成转换。

那么,如何从结果中获取该数字?

再一次,这是一个 Java 项目,我所有的结果都是 play.mvc.Result,而不是 play.mvc.api.Result。

编辑:

假设您有一条执行 DELETE 的路由:

DELETE  /url/delete/:id/         myapp.mycontroller.delete(id: Long)
Run Code Online (Sandbox Code Playgroud)

控制器方法如下所示:

public static Result delete(Long id) {
    Mymodel m = MyModel.get(id);
    if (m.hasDependencies) {
        throw new CustomException(statusCode, message);
    }
    m.delete();
    return ok();
}
Run Code Online (Sandbox Code Playgroud)

因此,它要么传递 ok() 要么传递带有自定义状态代码的异常。

我正在谈论的批处理功能将是同一控制器中的另一种方法。这将通过表单元素接收一批 ID。然后目标是在所有这些 id 上调用所需的函数。

重点是使用现有的控制器方法,因为它们包含需要考虑某些模型的其他检查和故障保护。

所以我有另一种方法来接收这个 Id 列表,然后在 try/catch 块中的循环中调用适当的函数。

这个想法是我想找出结果的状态码是什么。就是这样。而已。我想要结果的状态码。

Dan*_*ski 5

play.mvc.Result仅仅是一个包装play.mvc.api.Result所以毕竟,你将需要与它的工作。

public static Result batch() {
    try {
        Result result = delete(1L);
        play.api.mvc.SimpleResult res = Await.result(result.getWrappedResult(), Duration.Inf());
        int status = res.header().status();
        //handle status
    } catch (Exception e) {
        //handle exception
    }
}
Run Code Online (Sandbox Code Playgroud)

AwaitDuration是 Scala 类

import scala.concurrent.Await;
import scala.concurrent.duration.Duration;
Run Code Online (Sandbox Code Playgroud)