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

时间:2014-07-28 15:27:04

标签: java playframework-2.0

我正在Play框架2.2.1版

中开发Java项目

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

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

似乎没有办法获取此状态代码。

我试过这个:check that a result is an ok playframework

但它不会编译,Java说无法完成演员表。

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

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

编辑:

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

DELETE  /url/delete/:id/         myapp.mycontroller.delete(id: Long)

控制器方法如下:

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

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

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

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

所以我有另一个方法接收这个Ids列表,然后在try / catch块中循环调用正确的函数。

我的想法是想知道结果的状态代码是什么。而已。而已。我想要结果的状态代码。

1 个答案:

答案 0 :(得分:4)

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
    }
}

等待持续时间是Scala类

import scala.concurrent.Await;
import scala.concurrent.duration.Duration;