在控制器内调用控制器。玩框架

时间:2012-01-04 12:54:11

标签: playframework

我有一个调用控制器的登录表单。

<form action="@{Application.callWS()}" method="post">
...
</form> 

public static void callWS(){
 //some logic
 if(true){
  renderTemplate("FOLDER1/FOLDER2/MY_View.html"); //call other page
 }
 else{
  renderTemplate("Application/index.html", error); // back to prev page with error variable
 }
}

如果是,我想要打电话给其他页面。但是当我执行renderTemplate()时,我页面中的url仍然相同。的 “http://本地主机:9000 /应用/ callws”

我在controllers/FOLDER1/FOLDER2/My_controller.java有一个控制器。 如果为true,我想从该控制器调用index()并通过这样做将url更改为与该页面相关的内容。

在我的路线中:

GET     /My_Page   FOLDER1/FOLDER2.My_controller.index

问题是:如何从第一个控制器调用其他页面并将URL更改为该页面。

我没有正确使用框架?

2 个答案:

答案 0 :(得分:3)

您应该只是致电控制器。

MyController.myMethod()

如果要传输消息或其他信息(例如错误消息),则应使用闪存范围: http://www.playframework.org/documentation/1.2.4/controllers#session

答案 1 :(得分:0)

尝试使用

controllers.FOLDER1.FOLDER2.My_controller.index 

(不是FOLDER / FOLDER2)因为FOLDER映射到java包,它们用点分隔(package1.subpackage.Class)。确保您的Controller具有包定义作为其第一个语句:

package controllers.FOLDER1.FOLDER2;

这可以让你的控制器编译:

controllers.FOLDER1.FOLDER2.My_controller.index(); 

以及路线档案中:

controllers.FOLDER1.FOLDER2.My_controller.index