2012-01-04 17 views
0

私は、コントロールを呼び出すログインフォームを持っています。コントローラー内のコントローラーを呼び出します。 Play Framework

<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()を実行するとき、私のページのURLはまだ同じです。 "http:// localhost:9000/application/callws"

私はcontrollers/FOLDER1/FOLDER2/My_controller.javaのコントローラーを持っています。 trueの場合は、そのコントローラからindex()を呼び出し、そのページに関連するURLに変更します。

私が持っている路線で:

GET  /My_Page FOLDER1/FOLDER2.My_controller.index 

質問は:どのように私はそのページに最初のコントローラと変更されたURLから他のページを呼び出すことができます。

フレームワークを正しく使用していませんか?

答えて

0

は(フォルダではない

controllers.FOLDER1.FOLDER2.My_controller.index 

を使用してみてください/ FOLDER2)は、ドットで区切られたjavaパッケージにマッピングされます(package1.subpackage.Class)。

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

+0

yor caseを正しく修正するための答えを正しく編集しました。この方法で動作しますか? –

+0

はい、動作しています。私がよく分からないルートファイル。 URLは、http:// localhost:9000/FOLDER1.FOLDER2/MyMethodのようなものを表示します。 – jaapaurelio

3

コントローラを呼び出すだけです。

MyController.myMethod()

あなたがメッセージやその他の情報、(例えば、エラー・メッセージ)を送信したい場合は、フラッシュスコープを使用する必要があります。 http://www.playframework.org/documentation/1.2.4/controllers#session

+0

どう

package controllers.FOLDER1.FOLDER2; 

これはあなたのコントローラがコンパイル取得するために動作します:あなたのコントローラは、その最初の文のようにパッケージ定義を持っていることを確認してくださいコントローラ/ FOLDER1/FOLDER2/My_controller.java内のメソッドを呼び出すことはできますか? FOLDER1/FOLDER2/My_controller.myMethod()?私はそれを行うとエラーが発生します:コンパイルできませんでした。エラーが発生しました:FOLDER1/FOLDER2.My_controllerはタイプ – jaapaurelio

関連する問題