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 块中的循环中调用适当的函数。
这个想法是我想找出结果的状态码是什么。就是这样。而已。我想要结果的状态码。
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)
Await和Duration是 Scala 类
import scala.concurrent.Await;
import scala.concurrent.duration.Duration;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2089 次 |
| 最近记录: |