11

Playのはじめにのドキュメントでは、次のコントローラーが表示されます。

public static void index() {
  Post frontPost = Post.find("order by postedAt desc").first();
  List<Post> olderPosts = Post.find("order by postedAt desc").from(1).fetch(10);
  render(frontPost, olderPosts);
}

次に、テンプレートでは、frontPostとolderPostsが特別なマッピングなしで使用されます。

<a href="#">${frontPost.title}</a>

Playはこれらの名前をどのように保存していますか?

4

1 に答える 1

15

これは、コードインジェクションによって作成されます。

コンパイル時に、変数名などの情報を追加するために、一部のクラスが拡張されます(Javassistによるコードインジェクションを使用)。

renderメソッドでは、この操作は「play.classloading.enhancers.LocalvariablesNamesEnhancer.LocalVariablesNamesTracer」クラスによって実行されます。

于 2010-10-27T19:48:43.507 に答える