在 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 框架中重定向到同一控制器中的动作的主要内容,如果未能解决你的问题,请参考以下文章

如何在typo3 V10的extbase控制器中重定向到404页面

如何重定向到同一控制器中的另一个动作?

Play framework 1.x 重定向删除动作

如何在 asp.net mvc 中重定向到正确的控制器操作

在 Codeigniter 中重定向后会话丢失

[本地主机在Codeigniter中重定向了您太多次