将Scalate集成到Play 2.0中

时间:2012-09-02 19:52:59

标签: playframework-2.0 sbt scalate

我欣赏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()的方法)

1 个答案:

答案 0 :(得分:1)

我开始使用插件来做到这一点。查看我的工作:https://github.com/kryptt/play2-scalate-plugin