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

Java 如何在Play框架中从结果中获取状态代码,java,playframework-2.0,Java,Playframework 2.0,我正在Play框架2.2.1版中进行一个Java项目 我试图在我的模型上实现一个批处理操作,返回一条消息,显示每个模型实例上查询的状态代码。这就是一个控制器方法调用另一个并从中获得结果 问题是,我需要从返回中获取状态代码,因为它必须在消息中 似乎没有办法获取此状态代码 我试过这个: 但是它不会编译,Java说转换无法完成 那么,我如何从结果中得到这个数字呢 同样,这是一个Java项目,我所有的结果都是play.mvc.Result,而不是play.mvc.api.Result 编辑: 假设您有一

我正在Play框架2.2.1版中进行一个Java项目

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

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

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

我试过这个:

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

那么,我如何从结果中得到这个数字呢

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

编辑:

假设您有一个执行删除操作的路由:

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上调用所需的函数

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

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


我想知道结果的状态码是什么。就这样。没别的了。我想要结果的状态码。

只是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;

你能发布一些相关的代码说明它在哪里失败,或者你想在哪里实现它吗?@Ryan:没有抛出错误。这个问题的重点是我找不到如何从结果中获取状态码。@KdgDev您说有编译器错误。编译器错误是什么?@Ryan我已经在解释中写下了。第六行,谢谢你。在这之后,我也需要获取主体,但这并没有以相同的方式工作,因为Scale将以枚举器的形式返回它。我没有找到解析的方法,所以我查看了PlayJava源代码,特别是测试助手,其中包含了我需要的功能。