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 和 oldPosts 没有任何特殊映射!

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

Play 如何保留这些名称?

4

1 回答 1

15

它是通过代码注入实现的。

在编译时,一些类被增强(通过代码注入,由Javassist),以添加一些信息,例如变量名。

在render方法中,这个操作是由“play.classloading.enhancers.LocalvariablesNamesEnhancer.LocalVariablesNamesTracer”类完成的。

于 2010-10-27T19:48:43.507 回答