我欣赏Play 2.0框架的一个功能是静态编译的视图。如果控制器呈现视图而不提供正确数量的类型良好的参数,则会引发编译错误。这大大提高了可维护性,因为控制器视图差异不必通过运行应用程序来测试,而是在编译时出现。
但是,标准的Play 2.0视图模板使用纯HTML和Scala作为语言。我想使用Scalate,因此我可以将Scala与更简洁的Scaml或Jade模板语言结合起来。但我不想使用Scalate在运行时编译我的视图,因为我将失去上面提到的静态编译视图的优势。
因此,我尝试使用elsewhere所述的xsbt-scalate-generator
实现我的Jade视图的静态编译。这只会让我感觉中途 - 正确配置的插件可以生成相应的.class
文件,但它的命名和打包方式与普通的Play 2.0视图不同。名为index.scala.html
的默认Play 2.0视图将编译到包index.class
中的文件views.html
。但是,名为index.jade
的Jade视图会在默认(空白)包中创建文件$_scalate_$default_jade.class
。此类不可导入,在Java Play 2.0控制器中不可用。
如何以我在控制器中编写return ok(views.html.index.render(args));
的方式生成我的Scalate视图的类文件?
(看来生成的类似乎至少提供了一个名为render()
的方法)