gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:53 25 4
gpt4 key购买 nike

我正在 Play 框架 2.2.1 版中开发一个 Java 项目

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

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

好像没有办法得到这个状态码。

我试过这个: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)

Controller 方法看起来像:

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

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

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

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

所以我有另一种方法接收此 ID 列表,然后在循环中调用适当的函数,在 try/catch block 中。

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

最佳答案

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

AwaitDuration 是 Scala 类

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

关于java - 如何从 Play Framework 中的结果中获取状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24998654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com