生成するHTMLをXMLリテラルでそのまま記述できる。その上で、「{」「}」で囲んだ所にScala関数を評価した結果が挿入される。そのままテンプレートエンジンである。
val html =
<html>
<head>
<title>Show {capitalizedTerm}</title>
</head>
<body>
<h1>Show {capitalizedTerm}</h1>
<table class="datasheet">
<tbody>
{
for (attr <- entity.attributes.toList) yield {
<tr>
<td>{attr.name}</td><td>{{{{doc.{attr.name} }}}}</td>
</tr>
}
}
</tbody>
</table>
<table class="action">
<tr>
<td><form action={getActionPath("edit")} method="get"><input type="hidden" name="key" value={getIdCode} /><input type="submit" value="Edit" /></form></td>
<td><form action={getActionPath("destroy")} method="post"><input type="hidden" name="key" value={getIdCode} /><input type="submit" value="Delete" /></form></td>
</tr>
</table>
<table class="menu">
<tr><td><a href={getActionPath("index")}>Index</a></td><td><a href={getActionPath("new")}>New</a></td></tr>
</table>
</body>
</html>
作成したXMLをテキストとして出力するのはこんな感じ。
XML.write(out, html, entityContext.textEncoding, false, null)
ScalaのXMLはこの他にも色々便利な機能がある。
Web系のプログラムだと何かとXMLやHTMLを使うことが多いので、言語ネイティブのXMLサポートは重要ですね。
0 件のコメント:
コメントを投稿