Playframework 播放控制器如何将具有正确名称的变量注入模板?

Playframework 播放控制器如何将具有正确名称的变量注入模板?,playframework,Playframework,在中,它们显示此控制器: 公共静态无效索引(){ Post frontPost=Post.find(“按postedAt desc排序”).first(); List olderPosts=Post.find(“按postedAt desc排序”)。from(1)。fetch(10); 渲染(前柱、旧柱); } 然后,在模板中使用frontPost和OlderPost,而无需任何特殊映射 Play是如何保存这些名称的?它是通过代码注入实现的 在编译时,为了添加一些信息,例如变量名,一些类得

在中,它们显示此控制器:

公共静态无效索引(){
Post frontPost=Post.find(“按postedAt desc排序”).first();
List olderPosts=Post.find(“按postedAt desc排序”)。from(1)。fetch(10);
渲染(前柱、旧柱);
}
然后,在模板中使用frontPost和OlderPost,而无需任何特殊映射



Play是如何保存这些名称的?

它是通过代码注入实现的

在编译时,为了添加一些信息,例如变量名,一些类得到了增强(通过代码注入,通过Javassist


在render方法中,此操作由“play.classloading.enhancers.localvariablesnamenhancer.LocalVariablesNamesTracer”类完成。

当传递没有名称要渲染的对象时,此功能会中断(例如:render(Posts.findById(id)))。生成的错误消息是模板中的一个简单NullPointerException。您知道错误消息在这种情况下没有更大帮助的原因吗?