在 Play 框架中重定向到同一控制器中的动作
Posted
技术标签:
【中文标题】在 Play 框架中重定向到同一控制器中的动作【英文标题】:Redirect to an action in same controller in Play framework 【发布时间】:2013-01-11 08:43:01 【问题描述】:我正在使用 Play 1.2.5。我有一个动作“welcome”,它有重定向语句到动作“view1”。重定向似乎有效(检查了我的日志),但重定向后未显示操作“view1”的视图。
public static void welcome()
redirect("/view1");
public static void view1()
// code goes here....
重定向后,view1 操作的视图未显示。
提前致谢!!
【问题讨论】:
为什么不在调试时运行它并在 view1 方法的渲染指令处设置断点? 【参考方案1】:代替
redirect("/view");
打电话
view1();
【讨论】:
您的view1()
方法在直接访问时有效吗?您的routes
文件中有方法吗?
是的,它可以直接工作。我也检查了我的路线文件。
你是什么意思它不起作用。如果你从welcome() 调用view1() 会发生什么?
@emt14 当我从 welcome() 调用 view1() 时,它没有更新和显示 view1 的视图【参考方案2】:
您的方法view1
是否以render();
结尾?
如果不是,您的控制器将不会显示任何内容。
您还需要拥有与您的welcome.html
文件处于同一级别的正确view1.html
文件。
【讨论】:
您好,感谢您的回复!你能告诉我正确的 view1.html 文件是什么意思吗?谢谢。 您好,按照惯例,如果您从 controllers.MyController.myMethod 调用 render(),将使用视图模板 views.MyController.myMethod.html。在您的示例中,调用 render() 表单 view1 方法将使用 view1.html。【参考方案3】:您可能需要检查 conf/routes 文件以确保 view1 在有效的路由匹配器中公开。例如:
* /view1 WhatEverYourControllerClassIsCalled.view1
或者通过一些通用的匹配器
* /action WhatEverYourControllerClassIsCalled.action
【讨论】:
以上是关于在 Play 框架中重定向到同一控制器中的动作的主要内容,如果未能解决你的问题,请参考以下文章