Play framework 1.x 重定向删除动作
Posted
技术标签:
【中文标题】Play framework 1.x 重定向删除动作【英文标题】:Play framework 1.x redirect delete action 【发布时间】:2013-02-07 13:43:17 【问题描述】:我想将动作调用从一个控制器重定向到另一个控制器。 ListController 显示条目列表,每个条目都有一个删除按钮。我不想在视图中使用具体的 EntryController 调用,因为我有一些稍后要实现的模拟控制器。
由于某种原因,play 不允许我调用 EntryController 上的动作,程序只是跳过调用线。调试播放代码发现ControllerInstrumentation.isActionCallAllowed()返回false。
列表控制器
public static void delete(Long id)
EntryController.delete(id);
ListController idndex 视图
#a @delete(id)delete/a
EntryController
public static void delete(Long id)
Entry entry = Entry.findById(id);
entry.delete();
路线
DELETE /id ListController.delete
DELETE /entries/id EntryController.delete
【问题讨论】:
【参考方案1】:route 说 'EntryController.delete
' 只接受 'DELETE
' 方法。因此,当您进行直接函数调用时,它会发出 HTTP GET
请求。您应该在重定向时覆盖 http 方法。
列表控制器
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);
【讨论】:
以上是关于Play framework 1.x 重定向删除动作的主要内容,如果未能解决你的问题,请参考以下文章