我想将操作调用从一个 Controller 重定向到另一个 Controller 。 ListController 显示条目列表,并且每个条目都有一个删除按钮。我不想在 View 中使用具体的 EntryController 调用,因为我有一些稍后要实现的模拟 Controller 。
出于某种原因,游戏不允许我调用 EntryController 上的操作,程序只是跳过调用线。调试 Play 代码我发现ControllerInstrumentation.isActionCallAllowed()返回false。
列表 Controller
public static void delete(Long id) {
EntryController.delete(id);
}
ListController idindex View
#{a @delete(id)}delete{/a}
入口 Controller
public static void delete(Long id) {
Entry entry = Entry.findById(id);
entry.delete();
}
路线
DELETE /{id} ListController.delete
DELETE /entries/{id} EntryController.delete
最佳答案
路由说“EntryController.delete
”仅接受“DELETE
”方法。因此,当您进行直接函数调用时,它会在某种程度上发出 HTTP GET
请求。您应该在重定向时重写 http 方法。
列表 Controller
public static void delete(Long id) {
//EntryController.delete(id);
Map<String, Object> args = new HashMap<String, Object>();
args.put("id", id);
args.put("x-http-method-override", "DELETE");
String fullUrl = Router.getFullUrl("EntryController.delete", args);
redirect(fullUrl);
}
关于playframework - Play框架1.x重定向删除操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14752566/