Wie Wiedergabe Controller inject Variablen mit dem richtigen Namen in Vorlagen?
-
26-09-2019 - |
Frage
In der Spielen bekommen begann docs , sie zeigen diesen Controller:
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);
}
Dann wird in der Vorlage die frontPost und olderPosts sind ohne besondere Zuordnung verwendet!
<a href="#">${frontPost.title}</a>
Wie ist die Erhaltung Wiedergabe diese Namen?
Lösung
Es wird von Code-Injektion gemacht wird.
Beim Kompilieren werden einige Klassen erweitert (mit Code-Injektion von Javassist ), um einige Informationen, wie Variablennamen hinzuzufügen.
In der Render-Methode, dieser Vorgang durch die "play.classloading.enhancers.LocalvariablesNamesEnhancer.LocalVariablesNamesTracer" Klasse gemacht wird.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow