这里有个hello scalate的例子,但它太简单了。 我想知道如何integirat升降机和梯级,例如,举起彗星,升降机的形式...是否有任何电梯+ Scalate完整示例?
2
A
回答
0
与任何其他升降机模板机制相同的方式。
片段可以调用:
<div class="lift:MySnippet">...</div>
和彗星仅仅是一个片段:
<div class="lift:comet?type=MyCometThing">...</div>
https://groups.google.com/d/topic/liftweb/f_zOj3ZOLQg/discussion
0
1
事实当然,Lift scalate模块(2.5)的当前版本不会(在与片段和彗星整合的意义上)。问题在于,scalate模块将scalate渲染器放入管道中,作为产生完整响应的东西。
因此,您的scaml文件将呈现,但它们不会支持提升标记。
为了得到你想要的,你应该进入模板加载器(幸运的是,允许你这样做)。
我玩了这一点,并从模块中剔除了一些代码。这对我很有用(虽然它需要很多东西,比如缓存模板,区域设置支持,开发模式与生产模式,可能还有一些配置参数(例如,在生产模式下是否需要每次处理scaml或初始化时?)
在Boot.scala:
ScalamdTemplateLoader.init
其中ScalamdTemplateLoader.scala是
... other imports ...
import net.liftmodules.scalate.LiftTemplateEngine
object ScalamdTemplateLoader extends Loggable {
val renderer = new LiftTemplateEngine
def init = {
LiftRules.externalTemplateResolver.default.set(scalateTemplateLoader _)
}
protected def createUri(path: List[String], ext: String): String = path.mkString("/") +
(if (ext.length > 0) "." + ext else "")
protected def canLoad(v: String): Boolean = {
renderer.canLoad(v)
}
def canRender(path: List[String], ext: String): Boolean = {
if (ext == "") {
canLoad(createUri(path, "scaml")) || canLoad(createUri(path, "ssp"))
} else {
val uri = createUri(path, ext)
(uri.endsWith(".ssp") || uri.endsWith(".scaml")) && canLoad(uri)
}
}
def scalateTemplateLoader: PartialFunction[(Locale, List[String]), Box[NodeSeq]] = {
case (l: Locale, path: List[String]) if (canRender(path, "")) => {
val uri: String = List("scaml", "ssp").map(createUri(path, _)).find(renderer.canLoad(_)).get
val rawTemplate = renderer.layout(uri)
val is = new ByteArrayInputStream(rawTemplate.getBytes("UTF-8"));
val parserFunction: InputStream => Box[NodeSeq] = S.htmlProperties.htmlParser
parserFunction(is)
}
}
}
大多数代码是直接从模块撕开(见ScalateView ......这将导致一个LiftResponse)...作为一个e xternal模板加载器,并通过S.htmlParser运行,我们最终得到了一个模板,该模板被输入到整个lift子系统中...... scalate被用作Lift的模板源,而不是响应源。
当我在模板养活这样的:
%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"}
%body
%p Hi there
%div.crap This is some crap
%div(class="lift:Demo1.currentTime")
%p I am having fun at
%span.time
我从demo1的预期的响应片段:
class Demo1 {
def currentTime(n : NodeSeq) : NodeSeq = <span class="time">{ new Date().toString }</span>
}
相关问题
- 1. 是否有任何HessianKit示例项目?
- 2. 在java中是否有任何Webcam集成的示例示例
- 3. 是否有任何有关iOS Keychain编程的完整文档示例代码或文章?
- 4. 是否有任何支持CSS Grid System的完整宽度?
- 5. 是否有任何完整的免费键盘TrueType字体?
- 6. 我们是否有任何针对vim的asp vbs完整版?
- 7. Highcharts中是否有任何关于完整显示标签的选项?
- 8. 是否有使用所有NSURLConnection委托方法的完整示例?
- 9. 是否有任何带有录音示例代码的ASP.NET?
- 10. 是否有任何有关Spanned和Spannable文本的示例
- 11. fabric8 springboot完整示例
- 12. 标准NS3协议标题示例是否完整?
- 13. 电梯:testCond - 它是如何工作的?
- 14. 在Windows上使用winhttp有没有任何完整的例子?
- 15. 是否有任何示例如何使用Matrix Toolkit Java(MTJ)?
- 16. 完整的Haskore示例
- 17. JavaScript中是否有合并或拆分表格单元的完整示例?
- 18. 是否有一个可编辑的jsGrid的完整工作示例?
- 19. 是否有任何官方SQL CE 4.0示例?
- 20. 是否有任何难以反编译的代码示例?
- 21. 是否有任何活的mxml mx:datagrid全文搜索示例\ tutorial?
- 22. 是否有任何示例代码检查PagedResultDto在asp.net样板
- 23. 是否有OCaml ppx_xml_conv模块的任何使用示例
- 24. Linux操作系统中是否有任何Bash脚本示例?
- 25. 在mvc4剃须刀中是否有任何VirtualPathProvider工作示例?
- 26. 在Couchbase PhoneGap中使用REST API是否有任何示例
- 27. 有没有电梯cheatsheet/quickref?
- 28. 是否有HTML5 keygen示例?
- 29. 是否有完整的win32包装库?
- 30. 是否有完整的eclipse包?
原来Scalate的模块,因为它目前存在的,如行为一个派遣例程,产生一个回应,并绕过所有的真正的提升善良...看到我的答案。 – 2013-02-10 06:38:47