2012-01-04 117 views
0

我有一个登录表单来调用控制器。控制器内部的呼叫控制器。播放框架

<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 
} 
} 

如果为true,我想调用其他页面。但是,当我renderTemplate()时,我的页面中的网址仍然相同。 “http:// localhost:9000/application/callws”

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

的路线,我有:

GET  /My_Page FOLDER1/FOLDER2.My_controller.index 

的问题是:我如何可以调用其他页面的第一控制器和变更网址到该页面。

我没有正确使用框架?

回答

0

尝试使用

controllers.FOLDER1.FOLDER2.My_controller.index 

(不FOLDER/FOLDER2)作为FOLDER映射到java包,它们之间用点分隔(package1.subpackage.Class)。确保你的控制器作为其第一条语句包定义:

package controllers.FOLDER1.FOLDER2; 

这工作让你的控制器编译:

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

,以及在你的路由文件:

controllers.FOLDER1.FOLDER2.My_controller.index 
+0

好吧,我的错误。但我只能做到这一点,如果我添加控制器之前:controllers.FOLDER1.FOLDER2.My_controller.index()。我必须在包中添加控制器,否则会显示错误:声明的包“FOLDER1.FOLDER2”与预期的包“controllers.FOLDER1.FOLDER2”不匹配。 – jaapaurelio 2012-01-04 14:52:16

+0

只需编辑答案即可正确解决问题。它是以这种方式工作吗? – 2012-01-04 15:14:40

+0

是的,正在工作。路线文件我不确定。该网址显示的内容类似于http:// localhost:9000/FOLDER1.FOLDER2/MyMethod – jaapaurelio 2012-01-04 15:53:06

3

您应该简单地调用控制器。

MyController.myMethod()

如果你想发送的邮件或其他信息,(例如错误讯息),你应该使用闪光灯范围: http://www.playframework.org/documentation/1.2.4/controllers#session

+0

如何我可以在控制器/ FOLDER1/FOLDER2/My_controller.java中调用一个方法吗? FOLDER1/FOLDER2/My_controller.myMethod()?我这样做时出现错误:无法编译。引发的错误是:FOLDER1/FOLDER2.My_controller无法解析为类型 – jaapaurelio 2012-01-04 14:17:04