Play コントローラーはどのようにして適切な名前の変数をテンプレートに挿入しますか?

StackOverflow https://stackoverflow.com/questions/4036904

  •  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」クラスによって実行されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top