Как игровые контроллеры вводят переменные с правильным именем в шаблоны?
-
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 и Hearposts используются без какого-либо специального отображения!
<a href="#">${frontPost.title}</a>
Как воспроизведение консервирует эти имена?
Решение
Это сделано по инъекции кода.
При компиляции некоторые классы усиливаются (с инъекцией кода, по Javassist), чтобы добавить некоторые информацию, такие как имена переменных.
В методе визуализации эта операция выполняется классом «Play.Classloading.enhancers.localvariablesnamesenHancer.localvariablesnameSraceSermanmannameSrablaceSermanmanmanmanmancaster».
Не связан с StackOverflow