Wie Wiedergabe Controller inject Variablen mit dem richtigen Namen in Vorlagen?

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

  •  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?

War es hilfreich?

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
scroll top