2

Play 2.0の作業を始めたばかりですが、これまでのところそれほど複雑ではありませんが、要求応答サイクルなどの基本的なことはあまり得られていません。JAVAPlayのリクエストレスポンスサイクルの最小限の例が欲しいです

4

2 に答える 2

3

基本的に、リクエストはHTTPルーターによって処理されます。HTTPルーターはURLを取得します(例:mydomain.com/details/)。次に、 routes設定ファイルでこのエントリを検索しようとします。ルートファイルの最初の一致する行に、それに対応するメソッド(コントローラーメソッド)があるため、コントローラーメソッドを呼び出します。これにより、レンダリングされるビューによってパラメーター化されたhtml応答が返されます。

簡略化:リクエスト(URL)->ルートテーブルでルートを検索->静的コントローラーメソッドを呼び出す->ビューでhtml応答を返す

(URLをパラメーター化することもできます(例:/ details / 12およびルートテーブル:/ details /:id)。これにより、IDをコントローラーメソッドに渡すことができます)

別のこと:パラメータ化する「逆ルーティング」を行うことも可能です。コントローラメソッドを直接呼び出すボタン。ルートファイルから対応するURLを検索します。

公式ドキュメントはこのトピックでかなり良いです:http ://www.playframework.org/documentation/2.0.2/JavaRouting

于 2012-07-10T09:34:25.683 に答える
2

what i want to point out is that if you want to pass data thru POST, you have to bind your request to some model field and then retrieve the passed data in your application: something like this:

your html:

<form action="/login" method="POST">
<input name="username"/>
...
</form>

your routes:

POST  /login      controllers.Application.login()

your Application:

public static Result login(){
Form<User> passedform = form(User.class).bindFromRequest();
if(passedform.hasErrors){
return badRequest("shit").as("text/plain");
} else {
User user = passedform.get();
System.out.print(user.username);
  }
}

now output is the username you have given in input field.. this will work python/django in this way:

def login(request):
  print(request.POST.get('username'))

:))) but anyway, play is beautiful also

hope i could help you

于 2012-07-10T10:01:45.880 に答える