2012-01-04 116 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