6
A
回答
21
play 2.0中的模板引擎直接來自play 1.0 scala模塊。如果您仍然想知道Scala這樣的功能語言帶來了什麼好處,那麼這當然是它發光的領域之一。
示範:
斯卡拉語法標記不是別的,只是一個函數調用。有趣的是,html片段本身被認爲是函數,允許最強大的替換結構。
讓我們定義一個名爲mytag.scala.html一個HTML頁面
文件:應用程序/視圖/ mytags/mytag.scala.html
@(level:String = "error", index: Int)(body: (String) => Html)
@level match {
case "success" => {
<p class="success" index="@index">
@body("green")
</p>
}
case "warning" => {
<p class="warning" index="@index">
@body("orange")
</p>
}
case "error" => {
<p class="error" index="@index">
@body("red")
</p>
}
}
上面的標籤發生在2個不同的3個參數參數組:
- A級,用字符串表示(默認爲 「錯誤」)
- 索引
- 最後是一個名爲body的函數,它接受一個字符串參數並返回HTML代碼。請注意,主體是在其自己的參數組中定義的。它相當於我們在j2ee中知道的jsp片段。
現在,讓我們看看如何使用這個標籤:
@import views.mytags._
@mytag("error",2) { color =>
Oops, something is <span style="color:@color">wrong</span>
}
之前,我們可以用一個標籤(或功能),我們需要讓玩家知道它位於何處:這的目的進口聲明。請注意,只要您調整導入位置,標記文件的位置(路徑)就無關緊要,就像使用Java包一樣。
跟隨呼叫本身,這是很簡單的。但請注意,我們正在將參數化的html片段傳遞給標記。
對於進一步的細節,你會發現在這個URL
斯卡拉模板文件玩2.0最終會與自己的文檔。
4
完全不必要的答案,但只是爲了訓練我的Scala。 在保持清醒的情況下,這不會起作用嗎?
@(level:String = "error", index: Int)(body: (String) => Html)
<p class="@level" index="@index">
@body(
@level match {
case "success" => "green"
case "warning" => "orange"
case "error" => "red"
}
)
</p>
0
我得到一個編譯器錯誤,當我使用第一個例子。刪除「視圖」。在導入時解決了問題
使用@import mytags。_
完整的示例(http://www.playframework.com/documentation/2.1.1/JavaTemplateUseCases):
Let’s write a simple views/tags/notice.scala.html tag that displays an HTML notice: @(level: String = "error")(body: (String) => Html) @level match { case "success" => { <p class="success"> @body("green") </p> } case "warning" => { <p class="warning"> @body("orange") </p> } case "error" => { <p class="error"> @body("red") </p> } }
現在讓我們用它從另一個模板:
@import tags._
@notice( 「錯誤」){顏色=>糟糕,有些東西是錯誤的}
相關問題
- 1. Play 2.0-scala中的自定義約束?
- 2. 如何定義這個簡單的JSP 2.0標籤
- 3. 如何將自定義包導入Scala Play! Framework 2.0
- 4. 如何在Play中創建自定義操作! 2.0框架?
- 5. 如何在Play中使用javascript內的自定義模板標籤!框架?
- 6. 如何從傳統的JSP自定義標籤中調用JSP 2.0 * .tag文件?
- 7. RSS 2.0使用WCF:添加自定義空間的RSS標籤
- 8. Jsf 2.0使用Primefaces的自定義標籤
- 9. Jsf 2.0自定義標記
- 10. 定義自定義標籤
- 11. 如何在netbeans中使用Play Framework 2.0
- 12. ColdFusion的使用自定義標籤中自定義標籤
- 13. Java/Scala:理解Play框架自定義標籤或助手
- 14. 如何在java中使用play 2.0來編寫自定義約束
- 15. 如何使用sbt/play 2.0爲Dart定義外部「構建器工具」?
- 16. jsf 2.0自定義組件/標籤NOT COMPOSITE
- 17. Play 2.0中使用泛型的自定義格式化器
- 18. Docusign自定義標籤 - 配方標籤
- 19. Grails 2.0單元測試自定義標籤庫
- 20. 如何動態定義此標籤?
- 21. 如何自定義選擇標籤?
- 22. 如何在變體定義標籤
- 23. 如何解決自定義標籤
- 24. 如何創建自定義javadoc標籤?
- 25. 如何解決自定義標籤?
- 26. 如何自定義UITabBarController的標籤欄?
- 27. 如何在Eclipse中定義@since標籤?
- 28. 如何自定義UITabBar文本標籤?
- 29. 如何自定義UITabBar文本標籤?
- 30. JSP 2.0自定義標籤:無法找到setter方法?
我真的不知道,不是scala專家呢。在SO上看起來像個好問題。 –
我應該很快重試play2.0。上次,我的實驗真的太生了!我不是Scala的專家,但我學到了很多,這是迄今爲止唯一的語言,給我的印象是我最終可以關閉Java;) – mandubian
在這種情況下,如果level是除成功之外的其他任何東西,警告或者錯誤,你會得到那個css類的ap標籤,這個css類可能不會被注入。在@Olivier Refalo的回答中,只有符合其中一個錯誤級別的P標籤纔會被打印出來。 – user3001