對我來說,這適合 作爲答案,至少對於最後一個問題。
這只是scala。只需XML內置的魔力。
http://www.alvarocarrasco.com/2011/03/play-framework-and-templating-with.html?m=1
樣品:
這是一個模板:Templates.scala文件
package templates
import play.api.templates.Html
import scala.xml.Xhtml
import controllers.routes
object Main {
def page (title:String="Default title")(content: => scala.xml.Elem) = Html {
"<!DOCTYPE html>" +
Xhtml.toXhtml(
<html>
<head>
<title>{title}</title>
<link rel="stylesheet" media="screen" href={routes.Assets.at("stylesheets/main.css").toString()} />
<link rel="shortcut icon" type="image/png" href={routes.Assets.at("images/favicon.png").toString()} />
<script src={routes.Assets.at("javascripts/jquery-1.9.0.min.js").toString()} type="text/javascript" />
</head>
<body>
{content}
</body>
</html>
)
}
// a panel template, just as an example
def panel (label:String="Some label")(content: => scala.xml.Elem) = {
<div class="panel">
<div class="panel-label">{label}</div>
<div>{content}</div>
</div>
}
}
這是一個索引頁 index.scala文件
package views
import templates.Main._
object IndexPage {
def apply() = {
page(title="Welcome to my Page!") {
<div>
<h1>Hello</h1>
<p>Some template markup</p>
{
panel(label="Dashboard panel")(
<div>
Panel content
</div>
)
}
</div>
}
}
}
這是一個控制器: Application.scala文件
package controllers
import play.api.mvc._
object Application extends Controller {
def index = Action {
Ok(
views.IndexPage()
);
}
}
來源
2013-07-02 12:30:52
ses
很好的總結,可以補充Scala的XML文本不適合創建複雜的程序和馬丁·奧德斯基自己認爲他們在事後一個錯誤是非常有用的。 –
@MariusSoutier好點,你可以加我的答案嗎? – biesior
有一個建議我已經得到:https://github.com/lihaoyi/scalatags (我會使用谷歌組[有時我使用/轉貼有問題],但它不是很酷作爲stackoverflow。) – ses