Play コントローラーはどのようにして適切な名前の変数をテンプレートに挿入しますか?
-
26-09-2019 - |
質問
の中に 入門ドキュメントを再生する, 、次のコントローラーが表示されます。
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 はこれらの名前をどのように保存しているのでしょうか?
解決
コードインジェクションによって作られています。
コンパイル時に、一部のクラスが (コード インジェクションによって) 拡張されます。 ジャバシスト)、変数名などの情報を追加します。
render メソッドでは、この操作は「play.classloading.enhancers.LocalvariablesNamesEnhancer.LocalVariablesNamesTracer」クラスによって実行されます。
所属していません StackOverflow