我正在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块中循环调用正确的函数。
我的想法是想知道结果的状态代码是什么。而已。而已。我想要结果的状态代码。
答案 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;