我正在尝试转换 Play!2.0应用程序转换为 Scalatra应用程序。我取得了一些成功,但还剩下 3 个问题,其中 1 个有自己的票。
1) 我理解这一点src/main/webapp/WEB-INF/views
并将src/main/webapp/WEB-INF/layouts
布局包含在标准目录结构中。但是,我无法让它在不同的层次结构中工作,例如,如果我有2 个 servlet并且想要为它们提供不同的视图:
- WEB-INF
- servlet1
- views
- layouts
- servlet2
- views
- layouts
在我提供的示例中,我无法充分引用不直接位于WEB-INF/views
or下的任何内容WEB-INF/layouts
。大概是因为我没有web.xml
正确声明一些东西?
// works
get("/") {
contentType = "text/html"
templateEngine.layout("/WEB-INF/views/app.jade")
}
// no worky
get("/") {
contentType = "text/html"
templateEngine.layout("/WEB-INF/servlet1/views/app.jade") // where servlet1/layouts/default.jade exists
}
2)模板是怎么回事?为了使这种转换生效,我需要能够将 Underscore 模板与 Scalatra 提供的任何东西(Jade、Mustache 等)结合使用。我选择 Jade 是因为所有默认示例都使用它。
我在这里真的遇到了两个子问题。
1) 我似乎无法在 Jade 中使用 Underscore 模板,即使我在这张票中包含了 javascripts 。也许这行得通,也许行不通。这大概是因为......
2)我的include
陈述看起来像标签,而不是实际上包括部分,所以很难测试第一个子问题。
<!-- / Nav -->
<include>nav</include>
<!-- / Action1 -->
<include>action1</include>
<include>action2</include>
<!-- / Wireframe -->
<div id="default-region">
<script id="template-layout" type="text/template">
<div id="region-nav"></div>
<div id="region-content"></div>
</script>
</div>
<!-- / CSS and JavaScripts relative to Backbone app -->
<include>assets</include>
等效app.jade
文件的样子:
// Nav
include nav
// Action1
include action1
include action2
// Wireframe
div#default-region
script#template-layout(type="text/template")
div#region-nav
div#region-content
// CSS and JavaScripts relative to Backbone app
include assets
任何帮助,将不胜感激!