這裏有個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